From: David Blaikie Date: Wed, 8 Mar 2017 23:57:08 +0000 (+0000) Subject: Defensively ensure that GetExternalDeclStmt protects itself from nested deserialization X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2aad00a423bc2a481e11eb2c679b68b8bc1a2133;p=clang Defensively ensure that GetExternalDeclStmt protects itself from nested deserialization git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@297322 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index c6564d666b..648c7b48ed 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/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); }