From: Bram Moolenaar Date: Tue, 16 Jul 2019 19:19:55 +0000 (+0200) Subject: patch 8.1.1703: breaking out of loop by checking window pointer insufficient X-Git-Tag: v8.1.1703 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=61386408063a2300d7d7f42c5156f66f6252fb54;p=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) --- diff --git a/src/misc2.c b/src/misc2.c index 000f043e1..0e41be4f5 100644 --- a/src/misc2.c +++ b/src/misc2.c @@ -4442,7 +4442,8 @@ has_non_ascii(char_u *s) 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 save_may_garbage_collect = may_garbage_collect; @@ -4494,9 +4495,9 @@ parse_queued_messages(void) may_garbage_collect = save_may_garbage_collect; - // If the current window changed we need to bail out of the waiting loop. - // E.g. when a job exit callback closes the terminal window. - if (curwin != old_curwin) + // If the current window or buffer changed we need to bail out of the + // waiting loop. E.g. when a job exit callback closes the terminal window. + if (curwin->w_id != old_curwin_id || curbuf->b_fnum != old_curbuf_fnum) ins_char_typebuf(K_IGNORE); } #endif diff --git a/src/version.c b/src/version.c index c37955315..e3373bed5 100644 --- a/src/version.c +++ b/src/version.c @@ -777,6 +777,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1703, /**/ 1702, /**/