From: Bram Moolenaar Date: Sat, 17 Oct 2020 16:51:52 +0000 (+0200) Subject: patch 8.2.1857: Vim9: using job_status() on an unused var gives an error X-Git-Tag: v8.2.1857 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=218450ad5ea1f9f033b06754a29502d86100ff65;p=vim patch 8.2.1857: Vim9: using job_status() on an unused var gives an error Problem: Vim9: using job_status() on an unused var gives an error. Solution: Return "fail". (closes #7158) --- diff --git a/src/job.c b/src/job.c index f55a8cd81..5876c28cb 100644 --- a/src/job.c +++ b/src/job.c @@ -1894,12 +1894,21 @@ f_job_start(typval_T *argvars, typval_T *rettv) void f_job_status(typval_T *argvars, typval_T *rettv) { - job_T *job = get_job_arg(&argvars[0]); - - if (job != NULL) + if (argvars[0].v_type == VAR_JOB && argvars[0].vval.v_job == NULL) { + // A job that never started returns "fail". rettv->v_type = VAR_STRING; - rettv->vval.v_string = vim_strsave((char_u *)job_status(job)); + rettv->vval.v_string = vim_strsave((char_u *)"fail"); + } + else + { + job_T *job = get_job_arg(&argvars[0]); + + if (job != NULL) + { + rettv->v_type = VAR_STRING; + rettv->vval.v_string = vim_strsave((char_u *)job_status(job)); + } } } diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim index 478a1e5cd..5f5a45985 100644 --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -74,7 +74,11 @@ def Test_assignment() if has('channel') var chan1: channel + assert_equal('fail', ch_status(chan1)) + var job1: job + assert_equal('fail', job_status(job1)) + # calling job_start() is in test_vim9_fails.vim, it causes leak reports endif if has('float') diff --git a/src/version.c b/src/version.c index ff532f1f7..6ea39c07e 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1857, /**/ 1856, /**/