r175010 - [preprocessing record] Add some sanity checks for the preprocessed entity index

Argyrios Kyrtzidis akyrtzi at gmail.com
Tue Feb 12 13:41:24 PST 2013


Author: akirtzidis
Date: Tue Feb 12 15:41:23 2013
New Revision: 175010

URL: http://llvm.org/viewvc/llvm-project?rev=175010&view=rev
Log:
[preprocessing record] Add some sanity checks for the preprocessed entity index
to make sure we don't crash on release if the index is not valid.

rdar://13089714

Modified:
    cfe/trunk/lib/Lex/PreprocessingRecord.cpp

Modified: cfe/trunk/lib/Lex/PreprocessingRecord.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PreprocessingRecord.cpp?rev=175010&r1=175009&r2=175010&view=diff
==============================================================================
--- cfe/trunk/lib/Lex/PreprocessingRecord.cpp (original)
+++ cfe/trunk/lib/Lex/PreprocessingRecord.cpp Tue Feb 12 15:41:23 2013
@@ -92,8 +92,10 @@ bool PreprocessingRecord::isEntityInFile
 
   int Pos = PPEI.Position;
   if (Pos < 0) {
-    assert(unsigned(-Pos-1) < LoadedPreprocessedEntities.size() &&
-           "Out-of bounds loaded preprocessed entity");
+    if (unsigned(-Pos-1) >= LoadedPreprocessedEntities.size()) {
+      assert(0 && "Out-of bounds loaded preprocessed entity");
+      return false;
+    }
     assert(ExternalSource && "No external source to load from");
     unsigned LoadedIndex = LoadedPreprocessedEntities.size()+Pos;
     if (PreprocessedEntity *PPE = LoadedPreprocessedEntities[LoadedIndex])
@@ -113,8 +115,10 @@ bool PreprocessingRecord::isEntityInFile
                                           FID, SourceMgr);
   }
 
-  assert(unsigned(Pos) < PreprocessedEntities.size() &&
-         "Out-of bounds local preprocessed entity");
+  if (unsigned(Pos) >= PreprocessedEntities.size()) {
+    assert(0 && "Out-of bounds local preprocessed entity");
+    return false;
+  }
   return isPreprocessedEntityIfInFileID(PreprocessedEntities[Pos],
                                         FID, SourceMgr);
 }





More information about the cfe-commits mailing list