diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2018-05-18 19:33:28 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-18 19:33:28 +0200 |
commit | 2ed2939597d217f12f9f6da1877684703aa9301f (patch) | |
tree | a8f07a3e7539dcd781b29df6cdc4719551ab655c /src | |
parent | 0ed297bdb495fa072053b3e28e0c504c7107cf5c (diff) | |
parent | 91c4de83c9de9049fc706f319deea38e9436502e (diff) | |
download | rneovim-2ed2939597d217f12f9f6da1877684703aa9301f.tar.gz rneovim-2ed2939597d217f12f9f6da1877684703aa9301f.tar.bz2 rneovim-2ed2939597d217f12f9f6da1877684703aa9301f.zip |
Merge #8406 'stdpath(): handle NULL default values'
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/eval.c | 13 | ||||
-rw-r--r-- | src/nvim/main.c | 11 | ||||
-rw-r--r-- | src/nvim/option.c | 12 | ||||
-rw-r--r-- | src/nvim/os/stdpaths.c | 4 |
4 files changed, 19 insertions, 21 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index a3540b3153..ffea88aa83 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -15712,6 +15712,9 @@ static void get_xdg_var_list(const XDGVarType xdg, typval_T *rettv) rettv->vval.v_list = list; tv_list_ref(list); char *const dirs = stdpaths_get_xdg_var(xdg); + if (dirs == NULL) { + return; + } do { size_t dir_len; const char *dir; @@ -15737,15 +15740,15 @@ static void f_stdpath(typval_T *argvars, typval_T *rettv, FunPtr fptr) return; // Type error; errmsg already given. } - if (strcmp(p, "config") == 0) { + if (strequal(p, "config")) { rettv->vval.v_string = (char_u *)get_xdg_home(kXDGConfigHome); - } else if (strcmp(p, "data") == 0) { + } else if (strequal(p, "data")) { rettv->vval.v_string = (char_u *)get_xdg_home(kXDGDataHome); - } else if (strcmp(p, "cache") == 0) { + } else if (strequal(p, "cache")) { rettv->vval.v_string = (char_u *)get_xdg_home(kXDGCacheHome); - } else if (strcmp(p, "config_dirs") == 0) { + } else if (strequal(p, "config_dirs")) { get_xdg_var_list(kXDGConfigDirs, rettv); - } else if (strcmp(p, "data_dirs") == 0) { + } else if (strequal(p, "data_dirs")) { get_xdg_var_list(kXDGDataDirs, rettv); } else { EMSG2(_("E6100: \"%s\" is not a valid stdpath"), p); diff --git a/src/nvim/main.c b/src/nvim/main.c index a4ed868af1..8b0d3bb2cc 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -1735,7 +1735,7 @@ static bool do_user_initialization(void) FUNC_ATTR_WARN_UNUSED_RESULT { bool do_exrc = p_exrc; - if (process_env("VIMINIT", true) == OK) { + if (process_env("VIMINIT") == OK) { do_exrc = p_exrc; return do_exrc; } @@ -1780,7 +1780,7 @@ static bool do_user_initialization(void) } while (iter != NULL); xfree(config_dirs); } - if (process_env("EXINIT", false) == OK) { + if (process_env("EXINIT") == OK) { do_exrc = p_exrc; return do_exrc; } @@ -1844,17 +1844,14 @@ static void source_startup_scripts(const mparm_T *const parmp) /// Get an environment variable, and execute it as Ex commands. /// /// @param env environment variable to execute -/// @param is_viminit when true, called for VIMINIT /// /// @return FAIL if the environment variable was not executed, /// OK otherwise. -static int process_env(char *env, bool is_viminit) +static int process_env(char *env) + FUNC_ATTR_NONNULL_ALL { const char *initstr = os_getenv(env); if (initstr != NULL) { - if (is_viminit) { - vimrc_found(NULL, NULL); - } char_u *save_sourcing_name = sourcing_name; linenr_T save_sourcing_lnum = sourcing_lnum; sourcing_name = (char_u *)env; diff --git a/src/nvim/option.c b/src/nvim/option.c index 1da259e6b8..48c874196d 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -6583,15 +6583,13 @@ static void paste_option_changed(void) /// When "fname" is not NULL, use it to set $"envname" when it wasn't set yet. void vimrc_found(char_u *fname, char_u *envname) { - char_u *p; - - if (fname != NULL) { - p = (char_u *)vim_getenv((char *)envname); + if (fname != NULL && envname != NULL) { + char *p = vim_getenv((char *)envname); if (p == NULL) { - /* Set $MYVIMRC to the first vimrc file found. */ - p = (char_u *)FullName_save((char *)fname, FALSE); + // Set $MYVIMRC to the first vimrc file found. + p = FullName_save((char *)fname, false); if (p != NULL) { - vim_setenv((char *)envname, (char *)p); + vim_setenv((char *)envname, p); xfree(p); } } else { diff --git a/src/nvim/os/stdpaths.c b/src/nvim/os/stdpaths.c index 866a005228..f6503dfdb0 100644 --- a/src/nvim/os/stdpaths.c +++ b/src/nvim/os/stdpaths.c @@ -65,7 +65,7 @@ char *stdpaths_get_xdg_var(const XDGVarType idx) const char *env_val = os_getenv(env); #ifdef WIN32 - if (env_val == NULL) { + if (env_val == NULL && xdg_defaults_env_vars[idx] != NULL) { env_val = os_getenv(xdg_defaults_env_vars[idx]); } #endif @@ -74,7 +74,7 @@ char *stdpaths_get_xdg_var(const XDGVarType idx) if (env_val != NULL) { ret = xstrdup(env_val); } else if (fallback) { - ret = (char *) expand_env_save((char_u *)fallback); + ret = (char *)expand_env_save((char_u *)fallback); } return ret; |