]> granicus.if.org Git - vim/commitdiff
patch 8.1.1703: breaking out of loop by checking window pointer insufficient v8.1.1703
authorBram Moolenaar <Bram@vim.org>
Tue, 16 Jul 2019 19:19:55 +0000 (21:19 +0200)
committerBram Moolenaar <Bram@vim.org>
Tue, 16 Jul 2019 19:19:55 +0000 (21:19 +0200)
Problem:    Breaking out of loop by checking window pointer is insufficient.
Solution:   Check the window ID and the buffer number. (closes #4683)

src/misc2.c
src/version.c

index 000f043e138dc74c672afba041f7487abfde6740..0e41be4f51278a647f58e2c7017c36d479040a12 100644 (file)
@@ -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
index c37955315b50b721b512fff4aff439889f3bd690..e3373bed5380767eb440d18275dcf47f5242cd45 100644 (file)
@@ -777,6 +777,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1703,
 /**/
     1702,
 /**/