Index: lib/Object/Object.cpp =================================================================== --- lib/Object/Object.cpp +++ lib/Object/Object.cpp @@ -64,9 +64,10 @@ 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); } Index: test/Bindings/llvm-c/objectfile.ll =================================================================== --- /dev/null +++ test/Bindings/llvm-c/objectfile.ll @@ -0,0 +1,2 @@ +; RUN: (llvm-c-test --object-list-sections < /dev/null 2>&1 || true) | grep 'Error reading object' +; This used to cause a segfault