llvm-c: Don't assert in LLVMTargetMachineEmitToFile on nonexistent file

Error handling code for raw_fd_ostream constructor is present, but
never used, because formatted_raw_ostream will always assert on closed
fd's before.

Patch by Peter Zotov

Differential Revision: http://llvm-reviews.chandlerc.com/D1909



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192881 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Anders Waldenborg 2013-10-17 10:39:35 +00:00
parent ed785629be
commit 0738387d08

View File

@ -205,11 +205,11 @@ LLVMBool LLVMTargetMachineEmitToFile(LLVMTargetMachineRef T, LLVMModuleRef M,
char* Filename, LLVMCodeGenFileType codegen, char** ErrorMessage) { char* Filename, LLVMCodeGenFileType codegen, char** ErrorMessage) {
std::string error; std::string error;
raw_fd_ostream dest(Filename, error, sys::fs::F_Binary); raw_fd_ostream dest(Filename, error, sys::fs::F_Binary);
formatted_raw_ostream destf(dest);
if (!error.empty()) { if (!error.empty()) {
*ErrorMessage = strdup(error.c_str()); *ErrorMessage = strdup(error.c_str());
return true; return true;
} }
formatted_raw_ostream destf(dest);
bool Result = LLVMTargetMachineEmit(T, M, destf, codegen, ErrorMessage); bool Result = LLVMTargetMachineEmit(T, M, destf, codegen, ErrorMessage);
dest.flush(); dest.flush();
return Result; return Result;