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
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);
}
--- /dev/null
+; RUN: not llvm-c-test --object-list-sections < /dev/null
+; This used to cause a segfault