Return an ErrorOr<Binary *> from createBinary.
[oota-llvm.git] / lib / Object / Archive.cpp
index 71efca2b18633492837e2e758dfcb16def8bfd1a..f91752e0ab0c9f192e22a91b24e74de9951d9eb4 100644 (file)
@@ -187,9 +187,10 @@ error_code Archive::Child::getAsBinary(OwningPtr<Binary> &Result) const {
   OwningPtr<MemoryBuffer> Buff;
   if (error_code ec = getMemoryBuffer(Buff))
     return ec;
-  if (error_code ec = createBinary(Buff.take(), ret))
-    return ec;
-  Result.swap(ret);
+  ErrorOr<Binary *> BinaryOrErr = createBinary(Buff.take());
+  if (error_code EC = BinaryOrErr.getError())
+    return EC;
+  Result.reset(BinaryOrErr.get());
   return object_error::success;
 }