diff options
| author | Jurica Bradaric <jbradaric@gmail.com> | 2016-08-28 13:42:18 +0200 | 
|---|---|---|
| committer | Jurica Bradaric <jbradaric@gmail.com> | 2016-10-07 17:07:17 +0200 | 
| commit | 61024fb4a84467d0b09076a537c6c8a9a75ae45a (patch) | |
| tree | cba1d0323e43801e9caf259dfa466f260d88ecae /src/nvim/eval.c | |
| parent | 50bd8297e67814b3ddbf0f274314fd2d321f63b6 (diff) | |
| download | rneovim-61024fb4a84467d0b09076a537c6c8a9a75ae45a.tar.gz rneovim-61024fb4a84467d0b09076a537c6c8a9a75ae45a.tar.bz2 rneovim-61024fb4a84467d0b09076a537c6c8a9a75ae45a.zip | |
eval: Exit early if argument is invalid.
Diffstat (limited to 'src/nvim/eval.c')
| -rw-r--r-- | src/nvim/eval.c | 15 | 
1 files changed, 13 insertions, 2 deletions
| diff --git a/src/nvim/eval.c b/src/nvim/eval.c index f077458c9b..a8b6a3ac95 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -7713,10 +7713,20 @@ static void f_bufnr(typval_T *argvars, typval_T *rettv, FunPtr fptr)  static void buf_win_common(typval_T *argvars, typval_T *rettv, bool get_nr)  { -  (void)get_tv_number(&argvars[0]);  // issue errmsg if type error +  int error = false; +  (void)get_tv_number_chk(&argvars[0], &error);  // issue errmsg if type error +  if (error) {  // the argument has an invalid type +    rettv->vval.v_number = -1; +    return; +  } +    emsg_off++; +  buf_T *buf = get_buf_tv(&argvars[0], true); +  if (buf == NULL) {  // no need to search if buffer was not found +    rettv->vval.v_number = -1; +    goto end; +  } -  buf_T *buf = get_buf_tv(&argvars[0], TRUE);    int winnr = 0;    int winid;    bool found_buf = false; @@ -7729,6 +7739,7 @@ static void buf_win_common(typval_T *argvars, typval_T *rettv, bool get_nr)      }    }    rettv->vval.v_number = (found_buf ? (get_nr ? winnr : winid) : -1); +end:    emsg_off--;  } | 
