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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217279 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bjorn Steinbrink 2014-09-05 21:22:09 +00:00
parent 2d1c2853e1
commit ea388503c4
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