Alexandre Julliard : kernel32: Create a fresh PE info structure when running winevdm.

Alexandre Julliard julliard at winehq.org
Fri Sep 28 14:18:02 CDT 2018


Module: wine
Branch: master
Commit: dc0ec5502d81446d7e1d70a79c062725772b295f
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=dc0ec5502d81446d7e1d70a79c062725772b295f

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Sep 28 19:22:44 2018 +0200

kernel32: Create a fresh PE info structure when running winevdm.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernel32/process.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 98ea09b..f7808af 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -2425,14 +2425,14 @@ error:
 static BOOL create_vdm_process( LPCWSTR filename, LPWSTR cmd_line, LPWSTR env, LPCWSTR cur_dir,
                                 LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
                                 BOOL inherit, DWORD flags, LPSTARTUPINFOW startup,
-                                LPPROCESS_INFORMATION info, LPCSTR unixdir,
-                                const pe_image_info_t *pe_info, int exec_only )
+                                LPPROCESS_INFORMATION info, LPCSTR unixdir, int exec_only )
 {
     static const WCHAR argsW[] = {'%','s',' ','-','-','a','p','p','-','n','a','m','e',' ','"','%','s','"',' ','%','s',0};
 
     BOOL ret;
     WCHAR buffer[MAX_PATH];
     LPWSTR new_cmd_line;
+    pe_image_info_t pe_info;
 
     if (!(ret = GetFullPathNameW(filename, MAX_PATH, buffer, NULL)))
 	return FALSE;
@@ -2446,8 +2446,10 @@ static BOOL create_vdm_process( LPCWSTR filename, LPWSTR cmd_line, LPWSTR env, L
         return FALSE;
     }
     sprintfW(new_cmd_line, argsW, winevdmW, buffer, cmd_line);
+    memset( &pe_info, 0, sizeof(pe_info) );
+    pe_info.machine = IMAGE_FILE_MACHINE_I386;
     ret = create_process( 0, winevdmW, new_cmd_line, env, cur_dir, psa, tsa, inherit,
-                          flags, startup, info, unixdir, pe_info, exec_only );
+                          flags, startup, info, unixdir, &pe_info, exec_only );
     HeapFree( GetProcessHeap(), 0, new_cmd_line );
     return ret;
 }
@@ -2678,7 +2680,7 @@ static BOOL create_process_impl( LPCWSTR app_name, LPWSTR cmd_line, LPSECURITY_A
     case BINARY_WIN16:
         TRACE( "starting %s as Win16/DOS binary\n", debugstr_w(name) );
         retv = create_vdm_process( name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
-                                   inherit, flags, startup_info, info, unixdir, &pe_info, FALSE );
+                                   inherit, flags, startup_info, info, unixdir, FALSE );
         break;
     case BINARY_UNIX_LIB:
         TRACE( "starting %s as %d-bit Winelib app\n",
@@ -2693,9 +2695,8 @@ static BOOL create_process_impl( LPCWSTR app_name, LPWSTR cmd_line, LPSECURITY_A
             if (!strcmpiW( p, comW ) || !strcmpiW( p, pifW ))
             {
                 TRACE( "starting %s as DOS binary\n", debugstr_w(name) );
-                pe_info.machine = IMAGE_FILE_MACHINE_I386;
                 retv = create_vdm_process( name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
-                                           inherit, flags, startup_info, info, unixdir, &pe_info, FALSE );
+                                           inherit, flags, startup_info, info, unixdir, FALSE );
                 break;
             }
             if (!strcmpiW( p, batW ) || !strcmpiW( p, cmdW ) )
@@ -2829,12 +2830,11 @@ static void exec_process( LPCWSTR name )
         /* check for .com or .pif extension */
         if (!(p = strrchrW( name, '.' ))) break;
         if (strcmpiW( p, comW ) && strcmpiW( p, pifW )) break;
-        pe_info.machine = IMAGE_FILE_MACHINE_I386;
         /* fall through */
     case BINARY_WIN16:
         TRACE( "starting %s as Win16/DOS binary\n", debugstr_w(name) );
         create_vdm_process( name, GetCommandLineW(), NULL, NULL, NULL, NULL,
-                            FALSE, 0, &startup_info, &info, NULL, &pe_info, TRUE );
+                            FALSE, 0, &startup_info, &info, NULL, TRUE );
         break;
     default:
         break;




More information about the wine-cvs mailing list