mirror of
https://github.com/neovim/neovim.git
synced 2025-10-20 00:31:49 +00:00
fix(env.c): drop envmap, free os_getenv() result #32683
Problem: vim.uv.os_setenv gets "stuck" per-key. #32550 Caused by the internal `envmap` cache. #7920 :echo $FOO <-- prints nothing :lua vim.uv.os_setenv("FOO", "bar") :echo $FOO <-- prints bar (as expected) :lua vim.uv.os_setenv("FOO", "fizz") :echo $FOO <-- prints bar, still (not expected. Should be "fizz") :lua vim.uv.os_unsetenv("FOO") :echo $FOO <-- prints bar, still (not expected. Should be nothing) :lua vim.uv.os_setenv("FOO", "buzz") :echo $FOO <-- prints bar, still (not expected. Should be "buzz") Solution: - Remove the `envmap` cache. - Callers to `os_getenv` must free the result. - Update all call-sites. - Introduce `os_getenv_noalloc`. - Extend `os_env_exists()` the `nonempty` parameter.
This commit is contained in:
@@ -63,7 +63,7 @@ uint64_t ui_client_start_server(int argc, char **argv)
|
||||
|
||||
#ifdef MSWIN
|
||||
// TODO(justinmk): detach breaks `tt.setup_child_nvim` tests on Windows?
|
||||
bool detach = os_env_exists("__NVIM_DETACH");
|
||||
bool detach = os_env_exists("__NVIM_DETACH", true);
|
||||
#else
|
||||
bool detach = true;
|
||||
#endif
|
||||
@@ -172,7 +172,7 @@ void ui_client_run(bool remote_ui)
|
||||
ui_client_attach(width, height, term, rgb);
|
||||
|
||||
// TODO(justinmk): this is for log_spec. Can remove this after nvim_log #7062 is merged.
|
||||
if (os_env_exists("__NVIM_TEST_LOG")) {
|
||||
if (os_env_exists("__NVIM_TEST_LOG", true)) {
|
||||
ELOG("test log message");
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user