diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2012-01-23 05:07:16 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2012-01-23 05:07:16 +0000 |
commit | 624e30894afbfa5d3370804bc0678a3c20d85502 (patch) | |
tree | 31bde42694a93cf592f20ed28705520c2d17482e /llvm/lib/Archive/ArchiveReader.cpp | |
parent | aebe36046d887b5a8e8ed3afe8d76acefb070102 (diff) | |
download | bcm5719-llvm-624e30894afbfa5d3370804bc0678a3c20d85502.tar.gz bcm5719-llvm-624e30894afbfa5d3370804bc0678a3c20d85502.zip |
Avoid using an invalidated iterator.
llvm-svn: 148681
Diffstat (limited to 'llvm/lib/Archive/ArchiveReader.cpp')
-rw-r--r-- | llvm/lib/Archive/ArchiveReader.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Archive/ArchiveReader.cpp b/llvm/lib/Archive/ArchiveReader.cpp index 0c89baa0d7d..a78c0f59bc0 100644 --- a/llvm/lib/Archive/ArchiveReader.cpp +++ b/llvm/lib/Archive/ArchiveReader.cpp @@ -572,7 +572,11 @@ Archive::findModulesDefiningSymbols(std::set<std::string>& symbols, SmallPtrSet<Module*, 16> Added; for (std::set<std::string>::iterator I=symbols.begin(), - E=symbols.end(); I != E; ++I) { + Next = I, + E=symbols.end(); I != E; I = Next) { + // Increment Next before we invalidate it. + ++Next; + // See if this symbol exists Module* m = findModuleDefiningSymbol(*I,error); if (!m) |