patch 8.1.1615: crash when passing buffer number to popup_create()
Problem: Crash when passing buffer number to popup_create(). (Yasuhiro
Matsumoto)
Solution: Initialze the window properly.
diff --git a/src/popupwin.c b/src/popupwin.c
index 3af35b6..d988cba 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -1056,8 +1056,7 @@
{
// use existing buffer
new_buffer = FALSE;
- wp->w_buffer = buf;
- ++buf->b_nwindows;
+ win_init_popup_win(wp, buf);
buffer_ensure_loaded(buf);
}
else
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 32ce96b..f89d566 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -1668,4 +1668,9 @@
call assert_equal({}, popup_getpos(winid))
call assert_equal(1, bufloaded(buf))
exe 'bwipe! ' .. buf
+
+ edit test_popupwin.vim
+ let winid = popup_create(bufnr(''), {})
+ redraw
+ call popup_close(winid)
endfunc
diff --git a/src/version.c b/src/version.c
index 8a9f347..ec541b4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1615,
+/**/
1614,
/**/
1613,