-ErrorOr<Binary *> object::createBinary(MemoryBuffer *Source) {
- OwningPtr<MemoryBuffer> scopedSource(Source);
- sys::fs::file_magic type = sys::fs::identify_magic(Source->getBuffer());
- error_code EC;
- switch (type) {
- case sys::fs::file_magic::archive: {
- OwningPtr<Binary> Ret(new Archive(scopedSource.take(), EC));
- if (EC)
- return EC;
- return Ret.take();
- }
+ErrorOr<std::unique_ptr<Binary>>
+object::createBinary(std::unique_ptr<MemoryBuffer> Buffer,
+ LLVMContext *Context) {
+ sys::fs::file_magic Type = sys::fs::identify_magic(Buffer->getBuffer());
+
+ switch (Type) {
+ case sys::fs::file_magic::archive:
+ return Archive::create(std::move(Buffer));