forked from aniani/vim
patch 8.1.1703: breaking out of loop by checking window pointer insufficient
Problem: Breaking out of loop by checking window pointer is insufficient. Solution: Check the window ID and the buffer number. (closes #4683)
This commit is contained in:
@@ -4442,7 +4442,8 @@ has_non_ascii(char_u *s)
|
|||||||
void
|
void
|
||||||
parse_queued_messages(void)
|
parse_queued_messages(void)
|
||||||
{
|
{
|
||||||
win_T *old_curwin = curwin;
|
int old_curwin_id = curwin->w_id;
|
||||||
|
int old_curbuf_fnum = curbuf->b_fnum;
|
||||||
int i;
|
int i;
|
||||||
int save_may_garbage_collect = may_garbage_collect;
|
int save_may_garbage_collect = may_garbage_collect;
|
||||||
|
|
||||||
@@ -4494,9 +4495,9 @@ parse_queued_messages(void)
|
|||||||
|
|
||||||
may_garbage_collect = save_may_garbage_collect;
|
may_garbage_collect = save_may_garbage_collect;
|
||||||
|
|
||||||
// If the current window changed we need to bail out of the waiting loop.
|
// If the current window or buffer changed we need to bail out of the
|
||||||
// E.g. when a job exit callback closes the terminal window.
|
// waiting loop. E.g. when a job exit callback closes the terminal window.
|
||||||
if (curwin != old_curwin)
|
if (curwin->w_id != old_curwin_id || curbuf->b_fnum != old_curbuf_fnum)
|
||||||
ins_char_typebuf(K_IGNORE);
|
ins_char_typebuf(K_IGNORE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -777,6 +777,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1703,
|
||||||
/**/
|
/**/
|
||||||
1702,
|
1702,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user