diff options
Diffstat (limited to 'lib/Object/Archive.cpp')
-rw-r--r-- | lib/Object/Archive.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/Object/Archive.cpp b/lib/Object/Archive.cpp index 71efca2b18..f91752e0ab 100644 --- a/lib/Object/Archive.cpp +++ b/lib/Object/Archive.cpp @@ -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; } |