mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
Close input file if exception is thrown
llvm-svn: 1784
This commit is contained in:
parent
3b17492321
commit
ec7118a6aa
@ -16,16 +16,20 @@ using std::string;
|
||||
Module *ParseAssemblyFile(const string &Filename) { // throw (ParseException)
|
||||
FILE *F = stdin;
|
||||
|
||||
if (Filename != "-")
|
||||
if (Filename != "-") {
|
||||
F = fopen(Filename.c_str(), "r");
|
||||
|
||||
if (F == 0) {
|
||||
throw ParseException(Filename, string("Could not open file '") +
|
||||
Filename + "'");
|
||||
if (F == 0)
|
||||
throw ParseException(Filename, "Could not open file '" + Filename + "'");
|
||||
}
|
||||
|
||||
// TODO: If this throws an exception, F is not closed.
|
||||
Module *Result = RunVMAsmParser(Filename, F);
|
||||
Module *Result;
|
||||
try {
|
||||
Result = RunVMAsmParser(Filename, F);
|
||||
} catch (...) {
|
||||
if (F != stdin) fclose(F); // Make sure to close file descriptor if an
|
||||
throw; // exception is thrown
|
||||
}
|
||||
|
||||
if (F != stdin)
|
||||
fclose(F);
|
||||
|
Loading…
Reference in New Issue
Block a user