Avoid a use after free.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 3 Jul 2015 12:20:34 +0000 (12:20 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 3 Jul 2015 12:20:34 +0000 (12:20 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241345 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Bitcode/Reader/BitcodeReader.cpp

index d9ac3ad7c644086f9f2816983133bf8b24a7119e..09f0b689bdc36889feab7a4257d2d85bc8d11be1 100644 (file)
@@ -4459,7 +4459,10 @@ std::error_code BitcodeReader::materialize(GlobalValue *GV) {
   // Upgrade any old intrinsic calls in the function.
   for (auto &I : UpgradedIntrinsics) {
     if (I.first != I.second) {
-      for (auto *U : I.first->users()) {
+      for (auto UI = I.first->user_begin(), UE = I.first->user_end();
+           UI != UE;) {
+        User *U = *UI;
+        ++UI;
         if (CallInst *CI = dyn_cast<CallInst>(U))
           UpgradeIntrinsicCall(CI, I.second);
       }