summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2017-03-08 23:57:08 +0000
committerDavid Blaikie <dblaikie@gmail.com>2017-03-08 23:57:08 +0000
commit9fd16f84c61d492af0f222457356d87dca7862ab (patch)
tree3bf236d0a479119c4b012737f742c081754b4cb1 /clang/lib
parentd1ba16e7620ed3967967a6244497b657784ecdbe (diff)
downloadbcm5719-llvm-9fd16f84c61d492af0f222457356d87dca7862ab.tar.gz
bcm5719-llvm-9fd16f84c61d492af0f222457356d87dca7862ab.zip
Defensively ensure that GetExternalDeclStmt protects itself from nested deserialization
llvm-svn: 297322
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Serialization/ASTReader.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index c6564d666b2..648c7b48ed8 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -6811,6 +6811,9 @@ Stmt *ASTReader::GetExternalDeclStmt(uint64_t Offset) {
// Offset here is a global offset across the entire chain.
RecordLocation Loc = getLocalBitOffset(Offset);
Loc.F->DeclsCursor.JumpToBit(Loc.Offset);
+ assert(NumCurrentElementsDeserializing == 0 &&
+ "should not be called while already deserializing");
+ Deserializing D(this);
return ReadStmtFromStream(*Loc.F);
}
OpenPOWER on IntegriCloud