Module: wine Branch: master Commit: bae3769ef9db585e765ff0cf62bca1533c4d1cc0 URL: https://gitlab.winehq.org/wine/wine/-/commit/bae3769ef9db585e765ff0cf62bca15...
Author: Rémi Bernon rbernon@codeweavers.com Date: Sat Dec 2 12:52:57 2023 +0100
ntdll: Set main_(argc|argv|envp) as early as possible.
Fixes: 62a979347a4dc1bd68f79b86397de85c016ec588
---
dlls/ntdll/unix/env.c | 6 +----- dlls/ntdll/unix/loader.c | 12 ++++++++++-- dlls/ntdll/unix/unix_private.h | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/dlls/ntdll/unix/env.c b/dlls/ntdll/unix/env.c index 3cb86da8401..d540a6b72a7 100644 --- a/dlls/ntdll/unix/env.c +++ b/dlls/ntdll/unix/env.c @@ -892,7 +892,7 @@ static void init_locale(void) /*********************************************************************** * init_environment */ -void init_environment( int argc, char *argv[], char *envp[] ) +void init_environment(void) { USHORT *case_table;
@@ -904,10 +904,6 @@ void init_environment( int argc, char *argv[], char *envp[] ) uctable = case_table + 2; lctable = case_table + case_table[1] + 2; } - - main_argc = argc; - main_argv = argv; - main_envp = envp; }
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c index 5673fdb38cb..090f9906e9f 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c @@ -1890,9 +1890,13 @@ static jstring wine_init_jni( JNIEnv *env, jobject obj, jobjectArray cmdline, jo
java_object = (*env)->NewGlobalRef( env, obj );
+ main_argc = argc; + main_argv = argv; + main_envp = environ; + init_paths( argv ); virtual_init(); - init_environment( argc, argv, environ ); + init_environment();
#ifdef __i386__ { @@ -2107,6 +2111,10 @@ static void check_command_line( int argc, char *argv[] ) */ DECLSPEC_EXPORT void __wine_main( int argc, char *argv[], char *envp[] ) { + main_argc = argc; + main_argv = argv; + main_envp = envp; + init_paths( argv );
if (!getenv( "WINELOADERNOEXEC" )) /* first time around */ @@ -2132,7 +2140,7 @@ DECLSPEC_EXPORT void __wine_main( int argc, char *argv[], char *envp[] ) #endif
virtual_init(); - init_environment( argc, argv, envp ); + init_environment();
#ifdef __APPLE__ apple_main_thread(); diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h index 1362c3a04d8..07f2724eac7 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h @@ -176,7 +176,7 @@ extern SYSTEM_CPU_INFORMATION cpu_info; extern struct ldt_copy __wine_ldt_copy; #endif
-extern void init_environment( int argc, char *argv[], char *envp[] ); +extern void init_environment(void); extern void init_startup_info(void); extern void *create_startup_info( const UNICODE_STRING *nt_image, ULONG process_flags, const RTL_USER_PROCESS_PARAMETERS *params,