diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-12-11 23:36:15 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-11 23:36:15 -0500 |
commit | cacdef5ff18e7123a9e734537a831839bf4ef0ec (patch) | |
tree | 5d4f1683e7678c1ba339992438def2a16e59adb9 /src/nvim/eval/funcs.c | |
parent | 062576f679a1bd5cb546bb8081dc97caefe7b51f (diff) | |
parent | da58242fb8e432415778e3eeab96a9d63edfdf06 (diff) | |
download | rneovim-cacdef5ff18e7123a9e734537a831839bf4ef0ec.tar.gz rneovim-cacdef5ff18e7123a9e734537a831839bf4ef0ec.tar.bz2 rneovim-cacdef5ff18e7123a9e734537a831839bf4ef0ec.zip |
Merge pull request #13489 from janlazo/issue-13485
eval: executable(), exepath() accept strings only
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r-- | src/nvim/eval/funcs.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index c5fa0f12cc..b56034b92d 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -95,7 +95,6 @@ PRAGMA_DIAG_POP static char *e_listarg = N_("E686: Argument of %s must be a List"); -static char *e_stringreq = N_("E928: String required"); static char *e_invalwindow = N_("E957: Invalid window number"); /// Dummy va_list for passing to vim_snprintf @@ -1877,10 +1876,12 @@ static void f_eventhandler(typval_T *argvars, typval_T *rettv, FunPtr fptr) */ static void f_executable(typval_T *argvars, typval_T *rettv, FunPtr fptr) { - const char *name = tv_get_string(&argvars[0]); + if (tv_check_for_string(&argvars[0]) == FAIL) { + return; + } // Check in $PATH and also check directly if there is a directory name - rettv->vval.v_number = os_can_exe(name, NULL, true); + rettv->vval.v_number = os_can_exe(tv_get_string(&argvars[0]), NULL, true); } typedef struct { @@ -1984,10 +1985,13 @@ static void f_execute(typval_T *argvars, typval_T *rettv, FunPtr fptr) /// "exepath()" function static void f_exepath(typval_T *argvars, typval_T *rettv, FunPtr fptr) { - const char *arg = tv_get_string(&argvars[0]); + if (tv_check_for_string(&argvars[0]) == FAIL) { + return; + } + char *path = NULL; - (void)os_can_exe(arg, &path, true); + (void)os_can_exe(tv_get_string(&argvars[0]), &path, true); rettv->v_type = VAR_STRING; rettv->vval.v_string = (char_u *)path; |