diff options
author | David Blaikie <dblaikie@gmail.com> | 2017-03-08 23:57:08 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2017-03-08 23:57:08 +0000 |
commit | 9fd16f84c61d492af0f222457356d87dca7862ab (patch) | |
tree | 3bf236d0a479119c4b012737f742c081754b4cb1 | |
parent | d1ba16e7620ed3967967a6244497b657784ecdbe (diff) | |
download | bcm5719-llvm-9fd16f84c61d492af0f222457356d87dca7862ab.tar.gz bcm5719-llvm-9fd16f84c61d492af0f222457356d87dca7862ab.zip |
Defensively ensure that GetExternalDeclStmt protects itself from nested deserialization
llvm-svn: 297322
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 3 |
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); } |