diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-08-12 22:25:24 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-08-12 22:25:24 +0000 |
commit | 78d81ecfc38c273cde9b4daed155c6c1e042f996 (patch) | |
tree | 9e1ec2d351051f40b6ad3fed27ae1536ef9cb599 /clang/lib/Serialization/ASTReader.cpp | |
parent | 971dc3a82a018b23d408484e0a0e4482d78dbdc8 (diff) | |
download | bcm5719-llvm-78d81ecfc38c273cde9b4daed155c6c1e042f996.tar.gz bcm5719-llvm-78d81ecfc38c273cde9b4daed155c6c1e042f996.zip |
[modules] If loading a .pcm file would cause us to run out of source locations, attempt to fail more gracefully. (No test; this requires >= 4GB of preprocessed input...)
llvm-svn: 244822
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 91dc4bdbc90..e950bdf40fa 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -2727,6 +2727,10 @@ ASTReader::ReadASTBlock(ModuleFile &F, unsigned ClientLoadCapabilities) { std::tie(F.SLocEntryBaseID, F.SLocEntryBaseOffset) = SourceMgr.AllocateLoadedSLocEntries(F.LocalNumSLocEntries, SLocSpaceSize); + if (!F.SLocEntryBaseID) { + Error("ran out of source locations"); + break; + } // Make our entry in the range map. BaseID is negative and growing, so // we invert it. Because we invert it, though, we need the other end of // the range. |