Ensure cleanup on command failure
This commit is contained in:
parent
781a46713b
commit
92c2439b56
@ -28,6 +28,7 @@ CMDResult run_command(CMDOutHandling out_handling, char *out_buf, u64 buf_size,
|
|||||||
char cmd[CMD_BUF_LEN] = {0};
|
char cmd[CMD_BUF_LEN] = {0};
|
||||||
CMDError err = build_command_from_args(cmd, CMD_BUF_LEN, args);
|
CMDError err = build_command_from_args(cmd, CMD_BUF_LEN, args);
|
||||||
if (err > SHELL_ERR_NO_ERROR) {
|
if (err > SHELL_ERR_NO_ERROR) {
|
||||||
|
va_end(args);
|
||||||
return CMD_NO_EXIT(err);
|
return CMD_NO_EXIT(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,6 +68,8 @@ internal inline CMDResult execute_command(const char *cmd,
|
|||||||
|
|
||||||
CMDError err = get_command_output(fp, out_handling, out_buf, buf_size);
|
CMDError err = get_command_output(fp, out_handling, out_buf, buf_size);
|
||||||
if (err > SHELL_ERR_NO_ERROR) {
|
if (err > SHELL_ERR_NO_ERROR) {
|
||||||
|
// Ensure process is closed on failure
|
||||||
|
wapp_shell_utils_pclose(fp);
|
||||||
return CMD_NO_EXIT(err);
|
return CMD_NO_EXIT(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,6 +112,8 @@ internal inline CMDError get_command_output(FILE *fp,
|
|||||||
internal inline CMDError get_output_status(FILE *fp, i32 *status_out) {
|
internal inline CMDError get_output_status(FILE *fp, i32 *status_out) {
|
||||||
#ifdef WAPP_PLATFORM_WINDOWS
|
#ifdef WAPP_PLATFORM_WINDOWS
|
||||||
if (!feof(fp)) {
|
if (!feof(fp)) {
|
||||||
|
// Ensure process is closed on failure
|
||||||
|
wapp_shell_utils_pclose(fp);
|
||||||
return SHELL_ERR_PROC_EXIT_FAIL;
|
return SHELL_ERR_PROC_EXIT_FAIL;
|
||||||
}
|
}
|
||||||
#endif /* ifdef WAPP_PLATFORM_WINDOWS */
|
#endif /* ifdef WAPP_PLATFORM_WINDOWS */
|
||||||
|
Loading…
Reference in New Issue
Block a user