[PATCH] kernelbase: Don't pass on StdHandles if they are never to be inherited

Brendan McGrath brendan at redmandi.com
Tue Jun 15 06:09:31 CDT 2021


Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51262
Signed-off-by: Brendan McGrath <brendan at redmandi.com>
---
 dlls/kernelbase/process.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/dlls/kernelbase/process.c b/dlls/kernelbase/process.c
index e3bd5feb296c..2833e76138bf 100644
--- a/dlls/kernelbase/process.c
+++ b/dlls/kernelbase/process.c
@@ -141,8 +141,8 @@ static WCHAR *get_file_name( WCHAR *cmdline, WCHAR *buffer, DWORD buflen )
  *           create_process_params
  */
 static RTL_USER_PROCESS_PARAMETERS *create_process_params( const WCHAR *filename, const WCHAR *cmdline,
-                                                           const WCHAR *cur_dir, void *env, DWORD flags,
-                                                           const STARTUPINFOW *startup )
+                                                           const WCHAR *cur_dir, void *env, BOOL inherit,
+                                                           DWORD flags, const STARTUPINFOW *startup )
 {
     RTL_USER_PROCESS_PARAMETERS *params;
     UNICODE_STRING imageW, curdirW, cmdlineW, titleW, desktopW, runtimeW, newdirW;
@@ -199,7 +199,7 @@ static RTL_USER_PROCESS_PARAMETERS *create_process_params( const WCHAR *filename
         params->hStdOutput = startup->hStdOutput;
         params->hStdError  = startup->hStdError;
     }
-    else if (flags & DETACHED_PROCESS)
+    else if (flags & DETACHED_PROCESS || ((flags & CREATE_NEW_CONSOLE) && !inherit) )
     {
         params->hStdInput  = INVALID_HANDLE_VALUE;
         params->hStdOutput = INVALID_HANDLE_VALUE;
@@ -545,7 +545,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
     info->hThread = info->hProcess = 0;
     info->dwProcessId = info->dwThreadId = 0;
 
-    if (!(params = create_process_params( app_name, tidy_cmdline, cur_dir, env, flags, startup_info )))
+    if (!(params = create_process_params( app_name, tidy_cmdline, cur_dir, env, inherit, flags, startup_info )))
     {
         status = STATUS_NO_MEMORY;
         goto done;
-- 
2.25.1




More information about the wine-devel mailing list