Restore the ability to check if LLVMCreateObjectFile was successful

Summary:
Until r216870 LLVMCreateObjectFile returned nullptr in case of an error,
so callers could check if the call was successful. Now, it always
returns an OwningBinary wrapped as an LLVMObjectFileRef, so callers
can't check if the call was successul.

This results in a segfault running e.g.

 llvm-c-test --object-list-sections < /dev/null

So the old behaviour should be restored.

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D5143

llvm-svn: 217279
This commit is contained in:
Bjorn Steinbrink 2014-09-05 21:22:09 +00:00
parent f4b8debc1c
commit 5a121b2ef5
2 changed files with 6 additions and 3 deletions

View File

@ -64,9 +64,10 @@ LLVMObjectFileRef LLVMCreateObjectFile(LLVMMemoryBufferRef MemBuf) {
ErrorOr<std::unique_ptr<ObjectFile>> ObjOrErr(
ObjectFile::createObjectFile(Buf->getMemBufferRef()));
std::unique_ptr<ObjectFile> Obj;
if (ObjOrErr)
Obj = std::move(ObjOrErr.get());
auto *Ret = new OwningBinary<ObjectFile>(std::move(Obj), std::move(Buf));
if (!ObjOrErr)
return nullptr;
auto *Ret = new OwningBinary<ObjectFile>(std::move(ObjOrErr.get()), std::move(Buf));
return wrap(Ret);
}

View File

@ -0,0 +1,2 @@
; RUN: not llvm-c-test --object-list-sections < /dev/null
; This used to cause a segfault