diff --git a/dlls/msvcrt/environ.c b/dlls/msvcrt/environ.c index 9e358d971f9..063a9254c67 100644 --- a/dlls/msvcrt/environ.c +++ b/dlls/msvcrt/environ.c @@ -155,6 +155,7 @@ static int env_set(char **env, wchar_t **wenv) GetLastError() != ERROR_ENVVAR_NOT_FOUND) return -1; + if (env_init(FALSE, TRUE)) return -1; *eq = 0; idx = env_get_index(*env); *eq = '='; @@ -180,6 +181,8 @@ static int env_set(char **env, wchar_t **wenv) } if (!MSVCRT__wenviron) return 0; + if (MSVCRT__wenviron == MSVCRT___winitenv) + if (env_init(TRUE, TRUE)) return -1; idx = wenv_get_index(*wenv); *weq = '='; if (!weq[1]) @@ -264,11 +267,6 @@ static int putenv_helper(const char *name, const char *val, const char *eq) char *env; int r; - _lock(_ENV_LOCK); - r = env_init(FALSE, TRUE); - _unlock(_ENV_LOCK); - if (r) return -1; - if (eq) { env = strdup(name);