From 9cb8766220b55e9ac5d222d16f2138c481034e0d Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Mon, 15 Nov 2021 07:49:01 +0100 Subject: [PATCH] Factorize resource release after CreateProcess() Free the wide characters string in all cases before checking for errors. --- app/src/sys/win/process.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/app/src/sys/win/process.c b/app/src/sys/win/process.c index f76fa12e..45980790 100644 --- a/app/src/sys/win/process.c +++ b/app/src/sys/win/process.c @@ -94,10 +94,10 @@ sc_process_execute_p(const char *const argv[], HANDLE *handle, goto error_close_stderr; } - if (!CreateProcessW(NULL, wide, NULL, NULL, TRUE, 0, NULL, NULL, &si, - &pi)) { - free(wide); - + BOOL ok = CreateProcessW(NULL, wide, NULL, NULL, TRUE, 0, NULL, NULL, &si, + &pi); + free(wide); + if (!ok) { if (GetLastError() == ERROR_FILE_NOT_FOUND) { ret = SC_PROCESS_ERROR_MISSING_BINARY; } @@ -115,7 +115,6 @@ sc_process_execute_p(const char *const argv[], HANDLE *handle, CloseHandle(stderr_write_handle); } - free(wide); *handle = pi.hProcess; return SC_PROCESS_SUCCESS;