diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2021-07-20 17:51:51 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-07-20 17:51:51 +0200 |
commit | 83494b4ac61898f687d6ef9dce4bad5802fb8e51 (patch) | |
tree | 36f06f4a70bd9a515527064cd8985029ab27c6a6 /src/job.c | |
parent | 9bb0dad0d8283c86fddf5b950f4fbb6fb8f12741 (diff) | |
download | vim-git-83494b4ac61898f687d6ef9dce4bad5802fb8e51.tar.gz |
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/job.c')
-rw-r--r-- | src/job.c | 20 |
1 files changed, 15 insertions, 5 deletions
@@ -1726,9 +1726,7 @@ f_prompt_setprompt(typval_T *argvars, typval_T *rettv UNUSED) char_u *text; if (in_vim9script() - && ((argvars[0].v_type != VAR_STRING - && argvars[0].v_type != VAR_NUMBER - && check_for_string_arg(argvars, 0) == FAIL) + && (check_for_string_or_number_arg(argvars, 0) == FAIL || check_for_string_arg(argvars, 1) == FAIL)) return; @@ -1875,9 +1873,15 @@ f_job_info(typval_T *argvars, typval_T *rettv) void f_job_setoptions(typval_T *argvars, typval_T *rettv UNUSED) { - job_T *job = get_job_arg(&argvars[0]); + job_T *job; jobopt_T opt; + if (in_vim9script() + && (check_for_job_arg(argvars, 0) == FAIL + || check_for_dict_arg(argvars, 1) == FAIL)) + return; + + job = get_job_arg(&argvars[0]); if (job == NULL) return; clear_job_options(&opt); @@ -1928,8 +1932,14 @@ f_job_status(typval_T *argvars, typval_T *rettv) void f_job_stop(typval_T *argvars, typval_T *rettv) { - job_T *job = get_job_arg(&argvars[0]); + job_T *job; + + if (in_vim9script() + && (check_for_job_arg(argvars, 0) == FAIL + || check_for_opt_string_or_number_arg(argvars, 1) == FAIL)) + return; + job = get_job_arg(&argvars[0]); if (job != NULL) rettv->vval.v_number = job_stop(job, argvars, NULL); } |