diff options
Diffstat (limited to 'src/option.c')
-rw-r--r-- | src/option.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/option.c b/src/option.c index 4444b1f89..fd9f75f11 100644 --- a/src/option.c +++ b/src/option.c @@ -2629,18 +2629,20 @@ set_init_1() # else static char *(names[3]) = {"TMPDIR", "TEMP", "TMP"}; # endif - int len; - garray_T ga; + int len; + garray_T ga; + int mustfree; ga_init2(&ga, 1, 100); for (n = 0; n < (long)(sizeof(names) / sizeof(char *)); ++n) { + mustfree = FALSE; # ifdef UNIX if (*names[n] == NUL) p = (char_u *)"/tmp"; else # endif - p = mch_getenv((char_u *)names[n]); + p = vim_getenv((char_u *)names[n], &mustfree); if (p != NULL && *p != NUL) { /* First time count the NUL, otherwise count the ','. */ @@ -2655,6 +2657,8 @@ set_init_1() ga.ga_len += len; } } + if (mustfree) + vim_free(p); } if (ga.ga_data != NULL) { @@ -2705,9 +2709,10 @@ set_init_1() char_u *buf; int i; int j; + int mustfree = FALSE; /* Initialize the 'cdpath' option's default value. */ - cdpath = mch_getenv((char_u *)"CDPATH"); + cdpath = vim_getenv((char_u *)"CDPATH", &mustfree); if (cdpath != NULL) { buf = alloc((unsigned)((STRLEN(cdpath) << 1) + 2)); @@ -2731,6 +2736,8 @@ set_init_1() options[opt_idx].def_val[VI_DEFAULT] = buf; options[opt_idx].flags |= P_DEF_ALLOCED; } + if (mustfree) + vim_free(cdpath); } } #endif @@ -2962,6 +2969,10 @@ set_init_1() p_tenc = empty_option; } # endif +# if defined(WIN3264) && defined(FEAT_MBYTE) + /* $HOME may have characters in active code page. */ + init_homedir(); +# endif } else { @@ -5089,6 +5100,12 @@ did_set_string_option(opt_idx, varp, new_value_alloced, oldval, errbuf, convert_setup(&input_conv, p_tenc, p_enc); convert_setup(&output_conv, p_enc, p_tenc); } + +# if defined(WIN3264) && defined(FEAT_MBYTE) + /* $HOME may have characters in active code page. */ + if (varp == &p_enc) + init_homedir(); +# endif } } #endif |