summaryrefslogtreecommitdiffstats
path: root/src/evalbuffer.c
diff options
context:
space:
mode:
authorYegappan Lakshmanan <yegappan@yahoo.com>2021-07-20 17:51:51 +0200
committerBram Moolenaar <Bram@vim.org>2021-07-20 17:51:51 +0200
commit83494b4ac61898f687d6ef9dce4bad5802fb8e51 (patch)
tree36f06f4a70bd9a515527064cd8985029ab27c6a6 /src/evalbuffer.c
parent9bb0dad0d8283c86fddf5b950f4fbb6fb8f12741 (diff)
patch 8.2.3188: Vim9: argument types are not checked at compile timev8.2.3188
Problem: Vim9: argument types are not checked at compile time. Solution: Add several more type checks, also at runtime. (Yegappan Lakshmanan, closes #8587)
Diffstat (limited to 'src/evalbuffer.c')
-rw-r--r--src/evalbuffer.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/evalbuffer.c b/src/evalbuffer.c
index 8a6c52d707..6f552c7193 100644
--- a/src/evalbuffer.c
+++ b/src/evalbuffer.c
@@ -387,6 +387,12 @@ f_bufnr(typval_T *argvars, typval_T *rettv)
int error = FALSE;
char_u *name;
+ if (in_vim9script()
+ && (check_for_opt_string_or_number_arg(argvars, 0) == FAIL
+ || (argvars[0].v_type != VAR_UNKNOWN
+ && check_for_opt_bool_arg(argvars, 1) == FAIL)))
+ return;
+
if (argvars[0].v_type == VAR_UNKNOWN)
buf = curbuf;
else
@@ -459,6 +465,12 @@ f_deletebufline(typval_T *argvars, typval_T *rettv)
tabpage_T *tp;
win_T *wp;
+ if (in_vim9script()
+ && (check_for_buffer_arg(argvars, 0) == FAIL
+ || check_for_lnum_arg(argvars, 1) == FAIL
+ || check_for_opt_lnum_arg(argvars, 2) == FAIL))
+ return;
+
buf = tv_get_buf(&argvars[0], FALSE);
if (buf == NULL)
{
@@ -727,6 +739,12 @@ f_getbufline(typval_T *argvars, typval_T *rettv)
linenr_T end = 1;
buf_T *buf;
+ if (in_vim9script()
+ && (check_for_buffer_arg(argvars, 0) == FAIL
+ || check_for_lnum_arg(argvars, 1) == FAIL
+ || check_for_opt_lnum_arg(argvars, 2) == FAIL))
+ return;
+
buf = tv_get_buf_from_arg(&argvars[0]);
if (buf != NULL)
{