]> granicus.if.org Git - vim/commitdiff
patch 8.2.4797: getwininfo() may get oudated values v8.2.4797
authorLemonBoy <thatlemon@gmail.com>
Wed, 20 Apr 2022 18:00:36 +0000 (19:00 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 20 Apr 2022 18:00:36 +0000 (19:00 +0100)
Problem:    getwininfo() may get oudated values.
Solution:   Make sure w_botline is up-to-date. (closes #10226)

src/evalwindow.c
src/testdir/test_bufwintabinfo.vim
src/version.c

index 53fd1e3569d959560e399d35dfa4e40e0c1d46a6..43a6d63ef6c981fa80ddc5e128127dd4a43fe200 100644 (file)
@@ -395,6 +395,9 @@ get_win_info(win_T *wp, short tpnr, short winnr)
     if (dict == NULL)
        return NULL;
 
+    // make sure w_botline is valid
+    validate_botline_win(wp);
+
     dict_add_number(dict, "tabnr", tpnr);
     dict_add_number(dict, "winnr", winnr);
     dict_add_number(dict, "winid", wp->w_id);
index 1d8e74a0ddd9ac44cd936d0a198e0efe6d28c5c0..403b98a365352ef4f442e43620ffeedf89064fcf 100644 (file)
@@ -172,4 +172,26 @@ func Test_getbufinfo_lines()
   bw!
 endfunc
 
+func Test_getwininfo_au()
+  enew
+  call setline(1, range(1, 16))
+
+  let g:info = #{}
+  augroup T1
+    au!
+    au WinEnter * let g:info = getwininfo(win_getid())[0]
+  augroup END
+
+  4split
+  " Check that calling getwininfo() from WinEnter returns fresh values for
+  " topline and botline.
+  call assert_equal(1, g:info.topline)
+  call assert_equal(4, g:info.botline)
+  close
+
+  unlet g:info
+  augroup! T1
+  bwipe!
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
index 74c0832e90ec5c87586a4a6a394403b3db04a64d..6bed251bb1910865a6abd77137f4c17294ae1eee 100644 (file)
@@ -746,6 +746,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4797,
 /**/
     4796,
 /**/