Permalink
Browse files

patch 8.0.0588: job_stop() often assumes the channel will be closed

Problem:    job_stop() often assumes the channel will be closed, while the job
            may not actually be stopped. (Martin Gammelsæter)
Solution:   Only assume the job stops on "kill".  Don't send a signal if the
            job has already ended. (closes #1632)
  • Loading branch information...
brammool committed Apr 29, 2017
1 parent 0635ee6 commit 1a9020d4cba6d90688506102ab587c371ff72f8b
Showing with 9 additions and 2 deletions.
  1. +7 −2 src/channel.c
  2. +2 −0 src/version.c
View
@@ -5148,12 +5148,17 @@ job_stop(job_T *job, typval_T *argvars)
return 0;
}
}
if (job->jv_status == JOB_ENDED)
{
ch_log(job->jv_channel, "Job has already ended, job_stop() skipped");
return 0;
}
ch_logs(job->jv_channel, "Stopping job with '%s'", (char *)arg);
if (mch_stop_job(job, arg) == FAIL)
return 0;
/* Assume that "hup" does not kill the job. */
if (job->jv_channel != NULL && STRCMP(arg, "hup") != 0)
/* Assume that only "kill" will kill the job. */
if (job->jv_channel != NULL && STRCMP(arg, "kill") == 0)
job->jv_channel->ch_job_killed = TRUE;
/* We don't try freeing the job, obviously the caller still has a
View
@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
588,
/**/
587,
/**/

0 comments on commit 1a9020d

Please sign in to comment.