From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- dlls/msvcrt/data.c | 35 +++++++++++++++++++++-------------- dlls/ucrtbase/tests/environ.c | 1 - 2 files changed, 21 insertions(+), 15 deletions(-)
diff --git a/dlls/msvcrt/data.c b/dlls/msvcrt/data.c index 14855fe5c94..e12a504c39c 100644 --- a/dlls/msvcrt/data.c +++ b/dlls/msvcrt/data.c @@ -988,14 +988,6 @@ void CDECL __set_app_type(int app_type)
#if _MSVCR_VER>=140
-/********************************************************************* - * _get_initial_narrow_environment (UCRTBASE.@) - */ -char** CDECL _get_initial_narrow_environment(void) -{ - return MSVCRT___initenv; -} - /********************************************************************* * _configure_narrow_argv (UCRTBASE.@) */ @@ -1010,16 +1002,19 @@ int CDECL _configure_narrow_argv(int mode) */ int CDECL _initialize_narrow_environment(void) { - TRACE("\n"); - return 0; + TRACE("\n"); + if (!MSVCRT___initenv) + MSVCRT___initenv = MSVCRT__environ = msvcrt_SnapshotOfEnvironmentA(); + return 0; }
/********************************************************************* - * _get_initial_wide_environment (UCRTBASE.@) + * _get_initial_narrow_environment (UCRTBASE.@) */ -wchar_t** CDECL _get_initial_wide_environment(void) +char** CDECL _get_initial_narrow_environment(void) { - return MSVCRT___winitenv; + _initialize_narrow_environment(); + return MSVCRT___initenv; }
/********************************************************************* @@ -1036,10 +1031,22 @@ int CDECL _configure_wide_argv(int mode) */ int CDECL _initialize_wide_environment(void) { - WARN("stub\n"); + TRACE("\n"); + if (!MSVCRT___winitenv) + MSVCRT___winitenv = MSVCRT__wenviron = msvcrt_SnapshotOfEnvironmentW(); return 0; }
+/********************************************************************* + * _get_initial_wide_environment (UCRTBASE.@) + */ +wchar_t** CDECL _get_initial_wide_environment(void) +{ + TRACE("\n"); + _initialize_wide_environment(); + return MSVCRT___winitenv; +} + /********************************************************************* * _get_narrow_winmain_command_line (UCRTBASE.@) */ diff --git a/dlls/ucrtbase/tests/environ.c b/dlls/ucrtbase/tests/environ.c index 64e25fa9f22..b92658b2a8b 100644 --- a/dlls/ucrtbase/tests/environ.c +++ b/dlls/ucrtbase/tests/environ.c @@ -136,7 +136,6 @@ static void test_initial_environ( void )
ok( p__p__wenviron() != NULL, "Unexpected NULL _wenviron[]\n" ); ok( *p__p__wenviron() == NULL, "Unexpected non empty _wenviron[]\n" ); - todo_wine ok( p_get_initial_wide_environment() != NULL, "Unexpected empty wide initial environment\n" ); ok( p_get_initial_wide_environment() == *p__p__wenviron(), "Expecting _wenviron[] to match initial wide environment\n" ); }