clean up better when exec fails

This commit is contained in:
David Rose 2002-08-01 00:14:47 +00:00
parent 9f9ec8d80b
commit 66c9cb9f8c

View File

@ -343,6 +343,8 @@ open_pipe(const string &cmd) {
#ifndef NDEBUG
cerr << "Unable to redirect stdout\n";
#endif
CloseHandle(hChildStdoutRd);
CloseHandle(hChildStdoutWr);
return false;
}
@ -357,6 +359,8 @@ open_pipe(const string &cmd) {
#ifndef NDEBUG
cerr << "DuplicateHandle failed\n";
#endif
CloseHandle(hChildStdoutRd);
CloseHandle(hChildStdoutWr);
return false;
}
CloseHandle(hChildStdoutRd);
@ -377,7 +381,7 @@ open_pipe(const string &cmd) {
cerr << "Unable to spawn process.\n";
#endif
close_pipe();
return false;
// Don't return yet, since we still need to clean up.
}
delete[] cmdline;
@ -387,8 +391,6 @@ open_pipe(const string &cmd) {
#ifndef NDEBUG
cerr << "Unable to restore stdout\n";
#endif
close_pipe();
return false;
}
// Close the write end of the pipe before reading from the
@ -397,11 +399,9 @@ open_pipe(const string &cmd) {
#ifndef NDEBUG
cerr << "Unable to close write end of pipe\n";
#endif
close_pipe();
return false;
}
return true;
return (_child_out != 0);
}
////////////////////////////////////////////////////////////////////