Avoid using an invalidated iterator.
authorRafael Espindola <rafael.espindola@gmail.com>
Mon, 23 Jan 2012 05:07:16 +0000 (05:07 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Mon, 23 Jan 2012 05:07:16 +0000 (05:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148681 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Archive/ArchiveReader.cpp

index 0c89baa0d7de424fdfa266c921bf02b35b07762e..a78c0f59bc064e8dcae92386833a537a4760a1d8 100644 (file)
@@ -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)