1
0
forked from aniani/vim

patch 8.1.0590: when a job ends the closed channels are not handled

Problem:    When a job ends the closed channels are not handled.
Solution:   When a job is detected to have ended, check the channels again.
            (closes #3530)
This commit is contained in:
Bram Moolenaar
2018-12-14 21:32:02 +01:00
parent 142a975815
commit cd1a62d468
4 changed files with 36 additions and 19 deletions

View File

@@ -5510,24 +5510,28 @@ has_pending_job(void)
/*
* Called once in a while: check if any jobs that seem useful have ended.
* Returns TRUE if a job did end.
*/
void
int
job_check_ended(void)
{
int i;
int did_end = FALSE;
// be quick if there are no jobs to check
if (first_job == NULL)
return;
return did_end;
for (i = 0; i < MAX_CHECK_ENDED; ++i)
{
/* NOTE: mch_detect_ended_job() must only return a job of which the
* status was just set to JOB_ENDED. */
// NOTE: mch_detect_ended_job() must only return a job of which the
// status was just set to JOB_ENDED.
job_T *job = mch_detect_ended_job(first_job);
if (job == NULL)
break;
job_cleanup(job); /* may free "job" */
did_end = TRUE;
job_cleanup(job); // may free "job"
}
if (channel_need_redraw)
@@ -5535,6 +5539,7 @@ job_check_ended(void)
channel_need_redraw = FALSE;
redraw_after_callback(TRUE);
}
return did_end;
}
/*