Make sure an error is always handled.

llvm-svn: 317724
This commit is contained in:
Rafael Espindola 2017-11-08 21:15:21 +00:00
parent edf782f0d0
commit 85593c2398
2 changed files with 15 additions and 3 deletions

View File

@ -0,0 +1,11 @@
# RUN: yaml2obj %s > %t
# RUN: not llvm-objcopy %t no/such/dir 2>&1 | FileCheck %s
# CHECK: failed to open no/such/dir
!ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64

View File

@ -116,10 +116,11 @@ void WriteObjectFile(const Object<ELFT> &Obj, StringRef File) {
Expected<std::unique_ptr<FileOutputBuffer>> BufferOrErr = Expected<std::unique_ptr<FileOutputBuffer>> BufferOrErr =
FileOutputBuffer::create(File, Obj.totalSize(), FileOutputBuffer::create(File, Obj.totalSize(),
FileOutputBuffer::F_executable); FileOutputBuffer::F_executable);
if (BufferOrErr.takeError()) handleAllErrors(BufferOrErr.takeError(), [](const ErrorInfoBase &) {
error("failed to open " + OutputFilename); error("failed to open " + OutputFilename);
else });
Buffer = std::move(*BufferOrErr); Buffer = std::move(*BufferOrErr);
Obj.write(*Buffer); Obj.write(*Buffer);
if (auto E = Buffer->commit()) if (auto E = Buffer->commit())
reportError(File, errorToErrorCode(std::move(E))); reportError(File, errorToErrorCode(std::move(E)));