]> granicus.if.org Git - clang/commitdiff
[PCH] Set the DeclContext before doing any deserialization, to make sure internal
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Thu, 9 Feb 2012 06:02:44 +0000 (06:02 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Thu, 9 Feb 2012 06:02:44 +0000 (06:02 +0000)
calls to Decl::getASTContext() by Decl's methods will find the TranslationUnitDecl
without crashing due to a parent declaration context still deserializing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150153 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Serialization/ASTReaderDecl.cpp

index 690c81ce5303bcd96a8b01a12419330e34e4e3ac..e2f4ae3a9b283a98d41bf0b1135373f707330f34 100644 (file)
@@ -2018,6 +2018,10 @@ Decl *ASTReader::ReadDeclRecord(DeclID ID) {
 
   assert(D && "Unknown declaration reading AST file");
   LoadedDecl(Index, D);
+  // Set the DeclContext before doing any deserialization, to make sure internal
+  // calls to Decl::getASTContext() by Decl's methods will find the
+  // TranslationUnitDecl without crashing.
+  D->setDeclContext(Context.getTranslationUnitDecl());
   Reader.Visit(D);
 
   // If this declaration is also a declaration context, get the