From: Nuno Lopes Date: Sun, 26 Jul 2009 16:36:45 +0000 (+0000) Subject: fix segfault (because of erasing after the vector boundaries) when the cached token... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1b68f71da2fc9e3771f81e8aa72d59bb26158bec;p=clang fix segfault (because of erasing after the vector boundaries) when the cached token position is at the end git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77159 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Lex/PPCaching.cpp b/lib/Lex/PPCaching.cpp index 53aa09c130..808787864b 100644 --- a/lib/Lex/PPCaching.cpp +++ b/lib/Lex/PPCaching.cpp @@ -102,7 +102,8 @@ void Preprocessor::AnnotatePreviousCachedTokens(const Token &Tok) { assert((BacktrackPositions.empty() || BacktrackPositions.back() < i) && "The backtrack pos points inside the annotated tokens!"); // Replace the cached tokens with the single annotation token. - CachedTokens.erase(AnnotBegin + 1, CachedTokens.begin() + CachedLexPos); + if (i < CachedLexPos) + CachedTokens.erase(AnnotBegin + 1, CachedTokens.begin() + CachedLexPos); *AnnotBegin = Tok; CachedLexPos = i; return;