summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/eval.c7
-rw-r--r--src/testdir/test_channel.vim4
-rw-r--r--src/version.c2
3 files changed, 12 insertions, 1 deletions
diff --git a/src/eval.c b/src/eval.c
index 23154061c4..510dd128da 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -15249,6 +15249,7 @@ f_job_start(typval_T *argvars UNUSED, typval_T *rettv)
#endif
#ifdef FEAT_CHANNEL
+ /* If the channel is reading from a buffer, write lines now. */
channel_write_in(job->jv_channel);
#endif
@@ -22601,7 +22602,11 @@ get_tv_string_buf_chk(typval_T *varp, char_u *buf)
#ifdef FEAT_JOB
{
job_T *job = varp->vval.v_job;
- char *status = job->jv_status == JOB_FAILED ? "fail"
+ char *status;
+
+ if (job == NULL)
+ return (char_u *)"no process";
+ status = job->jv_status == JOB_FAILED ? "fail"
: job->jv_status == JOB_ENDED ? "dead"
: "run";
# ifdef UNIX
diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim
index 31a4ff6eb2..5133a24965 100644
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -108,6 +108,10 @@ func s:communicate(port)
call assert_false(1, "Can't open channel")
return
endif
+ if has('job')
+ " check that no job is handled correctly
+ call assert_equal('no process', string(ch_getjob(handle)))
+ endif
" Simple string request and reply.
call assert_equal('got it', ch_evalexpr(handle, 'hello!'))
diff --git a/src/version.c b/src/version.c
index 4d8c525005..92fb02a7dd 100644
--- a/src/version.c
+++ b/src/version.c
@@ -744,6 +744,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1503,
+/**/
1502,
/**/
1501,