1
0
forked from aniani/vim

patch 8.2.0239: MS-Windows: 'env' job option does not override existing vars

Problem:    MS-Windows: 'env' job option does not override existing
            environment variables.  (Tim Pope)
Solution:   Set the environment variables later. (Yasuhiro Matsumoto,
            closes #5485, closes #5608)
This commit is contained in:
Bram Moolenaar
2020-02-10 22:06:32 +01:00
parent b3e195cca7
commit 355757aed6
3 changed files with 29 additions and 18 deletions

View File

@@ -4948,24 +4948,6 @@ win32_build_env(dict_T *env, garray_T *gap, int is_terminal)
if (ga_grow(gap, 1) == FAIL)
return;
if (base)
{
WCHAR *p = (WCHAR*) base;
// for last \0
if (ga_grow(gap, 1) == FAIL)
return;
while (*p != 0 || *(p + 1) != 0)
{
if (ga_grow(gap, 1) == OK)
*((WCHAR*)gap->ga_data + gap->ga_len++) = *p;
p++;
}
FreeEnvironmentStrings(base);
*((WCHAR*)gap->ga_data + gap->ga_len++) = L'\0';
}
if (env != NULL)
{
for (hi = env->dv_hashtab.ht_array; todo > 0; ++hi)
@@ -4997,6 +4979,24 @@ win32_build_env(dict_T *env, garray_T *gap, int is_terminal)
}
}
if (base)
{
WCHAR *p = (WCHAR*) base;
// for last \0
if (ga_grow(gap, 1) == FAIL)
return;
while (*p != 0 || *(p + 1) != 0)
{
if (ga_grow(gap, 1) == OK)
*((WCHAR*)gap->ga_data + gap->ga_len++) = *p;
p++;
}
FreeEnvironmentStrings(base);
*((WCHAR*)gap->ga_data + gap->ga_len++) = L'\0';
}
# if defined(FEAT_CLIENTSERVER) || defined(FEAT_TERMINAL)
{
# ifdef FEAT_CLIENTSERVER