patch 8.1.2109: popup_getoptions() hangs with tab-local popup
Problem: popup_getoptions() hangs with tab-local popup.
Solution: Correct pointer name. (Marko Mahnič, closes #5006)
diff --git a/src/popupwin.c b/src/popupwin.c
index a77d98b..0681207 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -2636,12 +2636,12 @@
i = 1;
FOR_ALL_TABPAGES(tp)
{
- win_T *p;
+ win_T *twp;
- for (p = tp->tp_first_popupwin; p != NULL; p = wp->w_next)
- if (p->w_id == id)
+ for (twp = tp->tp_first_popupwin; twp != NULL; twp = twp->w_next)
+ if (twp->w_id == id)
break;
- if (p != NULL)
+ if (twp != NULL)
break;
++i;
}
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index b9d6d83..9d8a0d0 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -2556,4 +2556,16 @@
call popup_clear()
endfunc
+func Test_popupwin_getoptions_tablocal()
+ topleft split
+ let win1 = popup_create('nothing', #{maxheight: 8})
+ let win2 = popup_create('something', #{maxheight: 10})
+ let win3 = popup_create('something', #{maxheight: 15})
+ call assert_equal(8, popup_getoptions(win1).maxheight)
+ call assert_equal(10, popup_getoptions(win2).maxheight)
+ call assert_equal(15, popup_getoptions(win3).maxheight)
+ call popup_clear()
+ quit
+endfunc
+
" vim: shiftwidth=2 sts=2
diff --git a/src/version.c b/src/version.c
index 469b759..00374c2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2109,
+/**/
2108,
/**/
2107,