diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-06-18 20:07:35 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-06-18 20:07:35 +0000 |
commit | 8fb31112482ebf335b717b783cbefa1f60930fd4 (patch) | |
tree | edda595509f4a488ed660e1a165bff7716aafd8e | |
parent | 9e42e92e43df3787a7162c066cb55ba097e9175c (diff) | |
download | bcm5719-llvm-8fb31112482ebf335b717b783cbefa1f60930fd4.tar.gz bcm5719-llvm-8fb31112482ebf335b717b783cbefa1f60930fd4.zip |
Revert a C API difference that I incorrectly introduced.
LLVMGetBitcodeModuleInContext should not take ownership on error. I will
try to localize this odd api requirement, but this should get the bots green.
llvm-svn: 211213
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 1 | ||||
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.h | 4 |
2 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 04fc18ec21f..9c398277d42 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -3380,6 +3380,7 @@ ErrorOr<Module *> llvm::getLazyBitcodeModule(MemoryBuffer *Buffer, BitcodeReader *R = new BitcodeReader(Buffer, Context, BufferOwned); M->setMaterializer(R); if (std::error_code EC = R->ParseBitcodeInto(M)) { + R->releaseBuffer(); // Never take ownership on error. delete M; // Also deletes R. return EC; } diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.h b/llvm/lib/Bitcode/Reader/BitcodeReader.h index 51a8c6a1113..6aa3e0e5adf 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.h +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.h @@ -239,6 +239,10 @@ public: void FreeState(); + void releaseBuffer() { + Buffer = nullptr; + } + bool isMaterializable(const GlobalValue *GV) const override; bool isDematerializable(const GlobalValue *GV) const override; std::error_code Materialize(GlobalValue *GV) override; |