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