patch 8.1.1575: callbacks may be garbage collected
Problem: Callbacks may be garbage collected.
Solution: Set reference in callbacks. (Ozaki Kiichi, closes #4564)
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 451f0b6..c332dca 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -1467,3 +1467,19 @@
call popup_close(winid)
endfunc
+
+func Test_popupwin_garbage_collect()
+ func MyPopupFilter(x, winid, c)
+ " NOP
+ endfunc
+
+ let winid = popup_create('something', {'filter': function('MyPopupFilter', [{}])})
+ call test_garbagecollect_now()
+ redraw
+ " Must not crach caused by invalid memory access
+ call feedkeys('j', 'xt')
+ call assert_true(v:true)
+
+ call popup_close(winid)
+ delfunc MyPopupFilter
+endfunc