Mirror of the Vim source from https://github.com/vim/vim
Revision | c2d8b596dd0f35910e6711f68b71b03a183cc112 (tree) |
---|---|
Time | 2020-10-18 02:00:05 |
Author | Bram Moolenaar <Bram@vim....> |
Commiter | Bram Moolenaar |
patch 8.2.1857: Vim9: using job_status() on an unused var gives an error
Commit: https://github.com/vim/vim/commit/218450ad5ea1f9f033b06754a29502d86100ff65
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Oct 17 18:51:52 2020 +0200
@@ -1894,12 +1894,21 @@ | ||
1894 | 1894 | void |
1895 | 1895 | f_job_status(typval_T *argvars, typval_T *rettv) |
1896 | 1896 | { |
1897 | - job_T *job = get_job_arg(&argvars[0]); | |
1897 | + if (argvars[0].v_type == VAR_JOB && argvars[0].vval.v_job == NULL) | |
1898 | + { | |
1899 | + // A job that never started returns "fail". | |
1900 | + rettv->v_type = VAR_STRING; | |
1901 | + rettv->vval.v_string = vim_strsave((char_u *)"fail"); | |
1902 | + } | |
1903 | + else | |
1904 | + { | |
1905 | + job_T *job = get_job_arg(&argvars[0]); | |
1898 | 1906 | |
1899 | - if (job != NULL) | |
1900 | - { | |
1901 | - rettv->v_type = VAR_STRING; | |
1902 | - rettv->vval.v_string = vim_strsave((char_u *)job_status(job)); | |
1907 | + if (job != NULL) | |
1908 | + { | |
1909 | + rettv->v_type = VAR_STRING; | |
1910 | + rettv->vval.v_string = vim_strsave((char_u *)job_status(job)); | |
1911 | + } | |
1903 | 1912 | } |
1904 | 1913 | } |
1905 | 1914 |
@@ -74,7 +74,11 @@ | ||
74 | 74 | |
75 | 75 | if has('channel') |
76 | 76 | var chan1: channel |
77 | + assert_equal('fail', ch_status(chan1)) | |
78 | + | |
77 | 79 | var job1: job |
80 | + assert_equal('fail', job_status(job1)) | |
81 | + | |
78 | 82 | # calling job_start() is in test_vim9_fails.vim, it causes leak reports |
79 | 83 | endif |
80 | 84 | if has('float') |
@@ -751,6 +751,8 @@ | ||
751 | 751 | static int included_patches[] = |
752 | 752 | { /* Add new patch number below this line */ |
753 | 753 | /**/ |
754 | + 1857, | |
755 | +/**/ | |
754 | 756 | 1856, |
755 | 757 | /**/ |
756 | 758 | 1855, |