]> granicus.if.org Git - clang/commitdiff
In StringLiteralParser::init(), fail gracefully if the string is
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Thu, 3 May 2012 01:01:56 +0000 (01:01 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Thu, 3 May 2012 01:01:56 +0000 (01:01 +0000)
not as we expect; it may be due to racing issue of a file coming from PCH
changing after the PCH is loaded.

rdar://11353109

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

lib/Lex/LiteralSupport.cpp

index c1d228b87989496e332a3f5ea5ff33fcc75ba8a8..b01fc1f8c6b3c286b137414282ef2b0f6b27ec6c 100644 (file)
@@ -1192,7 +1192,12 @@ void StringLiteralParser::init(const Token *StringToks, unsigned NumStringToks){
         if (DiagnoseBadString(StringToks[i]))
           hadError = true;
     } else {
-      assert(ThisTokBuf[0] == '"' && "Expected quote, lexer broken?");
+      if (ThisTokBuf[0] != '"') {
+        // The file may have come from PCH and then changed after loading the
+        // PCH; Fail gracefully.
+        hadError = true;
+        continue;
+      }
       ++ThisTokBuf; // skip "
 
       // Check if this is a pascal string