diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-03 12:20:34 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-03 12:20:34 +0000 |
commit | d48e54c5eac9bcc11a499a627220f7a05841993a (patch) | |
tree | c8afa12f35628aef1816ac93c454200e7541bc9c /llvm/lib/Bitcode | |
parent | 097110f590b04ff2e1813b2adcbb525dab61bdb5 (diff) | |
download | bcm5719-llvm-d48e54c5eac9bcc11a499a627220f7a05841993a.tar.gz bcm5719-llvm-d48e54c5eac9bcc11a499a627220f7a05841993a.zip |
Avoid a use after free.
llvm-svn: 241345
Diffstat (limited to 'llvm/lib/Bitcode')
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index d9ac3ad7c64..09f0b689bdc 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -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); } |