diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/nvim/os/env.c | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/src/nvim/os/env.c b/src/nvim/os/env.c index 915c0a1f9f..33b67a8116 100644 --- a/src/nvim/os/env.c +++ b/src/nvim/os/env.c @@ -111,6 +111,8 @@ bool os_env_exists(const char *name)  /// Sets an environment variable.  /// +/// Windows (Vim-compat): Empty string (:let $FOO="") undefines the env var. +///  /// @warning Existing pointers to the result of os_getenv("foo") are  ///          INVALID after os_setenv("foo", …).  int os_setenv(const char *name, const char *value, int overwrite) @@ -123,6 +125,10 @@ int os_setenv(const char *name, const char *value, int overwrite)    if (!overwrite && os_getenv(name) != NULL) {      return 0;    } +  if (value[0] == '\0') { +    // Windows (Vim-compat): Empty string undefines the env var. +    return os_unsetenv(name); +  }  #else    if (!overwrite && os_env_exists(name)) {      return 0;  | 
