Author: Raphael Isemann
Date: 2020-02-25T13:20:54+01:00
New Revision: 93b6e1924081874039e6c88828db8e0ab7bbba04

URL: 
https://github.com/llvm/llvm-project/commit/93b6e1924081874039e6c88828db8e0ab7bbba04
DIFF: 
https://github.com/llvm/llvm-project/commit/93b6e1924081874039e6c88828db8e0ab7bbba04.diff

LOG: [lldb] Initialize NameSearchContext::m_namespace_map in constructor

This member is for some reason initialized in 
ClangASTSource::FindExternalVisibleDecls
so all other functions using this member dereference a nullptr unless we
call this function before that. Let's just initialize this in the constructor.

This should be NFC as the only side effect is that we don't reset the namespace 
map
when calling ClangASTSource::FindExternalVisibleDecls multiple times (and we 
never
call this function multiple times for one NameSearchContext from what I can 
see).

Added: 
    

Modified: 
    lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
    lldb/source/Plugins/ExpressionParser/Clang/NameSearchContext.h

Removed: 
    


################################################################################
diff  --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp 
b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
index a6910a140865..bf0a354c890b 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
@@ -551,8 +551,6 @@ void 
ClangASTSource::FindExternalVisibleDecls(NameSearchContext &context) {
                context.m_decl_context->getDeclKindName());
   }
 
-  context.m_namespace_map = std::make_shared<ClangASTImporter::NamespaceMap>();
-
   if (isa<NamespaceDecl>(context.m_decl_context)) {
     LookupInNamespace(context);
   } else if (isa<ObjCInterfaceDecl>(context.m_decl_context)) {

diff  --git a/lldb/source/Plugins/ExpressionParser/Clang/NameSearchContext.h 
b/lldb/source/Plugins/ExpressionParser/Clang/NameSearchContext.h
index 4f6b68b302aa..52d2a19a404b 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/NameSearchContext.h
+++ b/lldb/source/Plugins/ExpressionParser/Clang/NameSearchContext.h
@@ -64,8 +64,10 @@ struct NameSearchContext {
   NameSearchContext(TypeSystemClang &clang_ts,
                     llvm::SmallVectorImpl<clang::NamedDecl *> &decls,
                     clang::DeclarationName &name, const clang::DeclContext *dc)
-      : m_clang_ts(clang_ts), m_decls(decls), m_decl_name(name),
-        m_decl_context(dc) {
+      : m_clang_ts(clang_ts), m_decls(decls),
+        m_namespace_map(std::make_shared<ClangASTImporter::NamespaceMap>()),
+        m_decl_name(name), m_decl_context(dc) {
+    ;
   }
 
   /// Create a VarDecl with the name being searched for and the provided type


        
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to