summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/include/lldb/Target/Target.h2
-rw-r--r--lldb/source/Expression/ClangASTSource.cpp4
-rw-r--r--lldb/source/Target/Target.cpp4
-rw-r--r--lldb/test/functionalities/load_unload/TestLoadUnload.py2
4 files changed, 7 insertions, 5 deletions
diff --git a/lldb/include/lldb/Target/Target.h b/lldb/include/lldb/Target/Target.h
index 5f99957e54d..70ed0434c6c 100644
--- a/lldb/include/lldb/Target/Target.h
+++ b/lldb/include/lldb/Target/Target.h
@@ -799,7 +799,7 @@ public:
GetImageSearchPathList ();
ClangASTContext *
- GetScratchClangASTContext();
+ GetScratchClangASTContext(bool create_on_demand=true);
ClangASTImporter *
GetClangASTImporter();
diff --git a/lldb/source/Expression/ClangASTSource.cpp b/lldb/source/Expression/ClangASTSource.cpp
index db08539b977..ca97fc19d34 100644
--- a/lldb/source/Expression/ClangASTSource.cpp
+++ b/lldb/source/Expression/ClangASTSource.cpp
@@ -27,7 +27,9 @@ ClangASTSource::~ClangASTSource()
{
m_ast_importer->ForgetDestination(m_ast_context);
- ClangASTContext *scratch_clang_ast_context = m_target->GetScratchClangASTContext();
+ // We are in the process of destruction, don't create clang ast context on demand
+ // by passing false to Target::GetScratchClangASTContext(create_on_demand).
+ ClangASTContext *scratch_clang_ast_context = m_target->GetScratchClangASTContext(false);
if (!scratch_clang_ast_context)
return;
diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp
index 53e8ccfdac6..978ab5ec4d5 100644
--- a/lldb/source/Target/Target.cpp
+++ b/lldb/source/Target/Target.cpp
@@ -1335,10 +1335,10 @@ Target::ImageSearchPathsChanged
}
ClangASTContext *
-Target::GetScratchClangASTContext()
+Target::GetScratchClangASTContext(bool create_on_demand)
{
// Now see if we know the target triple, and if so, create our scratch AST context:
- if (m_scratch_ast_context_ap.get() == NULL && m_arch.IsValid())
+ if (m_scratch_ast_context_ap.get() == NULL && m_arch.IsValid() && create_on_demand)
{
m_scratch_ast_context_ap.reset (new ClangASTContext(m_arch.GetTriple().str().c_str()));
m_scratch_ast_source_ap.reset (new ClangASTSource(GetSP()));
diff --git a/lldb/test/functionalities/load_unload/TestLoadUnload.py b/lldb/test/functionalities/load_unload/TestLoadUnload.py
index 20b5d717cf2..fca156b84ad 100644
--- a/lldb/test/functionalities/load_unload/TestLoadUnload.py
+++ b/lldb/test/functionalities/load_unload/TestLoadUnload.py
@@ -49,7 +49,7 @@ class LoadUnloadTestCase(TestBase):
# Add teardown hook to clear image-search-paths after the test.
# rdar://problem/10501020
# Uncomment the following to reproduce 10501020.
- #self.addTearDownHook(lambda: self.runCmd("target modules search-paths clear"))
+ self.addTearDownHook(lambda: self.runCmd("target modules search-paths clear"))
self.expect("target modules search-paths list",
substrs = [os.getcwd(), new_dir])
OpenPOWER on IntegriCloud