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