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)
diff --git a/src/os_win32.c b/src/os_win32.c
index 2594aee..f394979 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -4948,24 +4948,6 @@
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 @@
}
}
+ 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