// Check that arguments look OK.
if (argvars[0].v_type == VAR_NUMBER)
{
- buf = buflist_findnr( argvars[0].vval.v_number);
+ buf = buflist_findnr(argvars[0].vval.v_number);
if (buf == NULL)
{
semsg(_(e_nobufnr), argvars[0].vval.v_number);
{
int id = wp->w_id;
+ // Just in case a check higher up is missing.
+ if (wp == curwin && ERROR_IF_POPUP_WINDOW)
+ return;
+
if (wp->w_close_cb.cb_name != NULL)
// Careful: This may make "wp" invalid.
invoke_popup_callback(wp, arg);
f_popup_close(typval_T *argvars, typval_T *rettv UNUSED)
{
int id = (int)tv_get_number(argvars);
- win_T *wp = find_popup_win(id);
+ win_T *wp;
+
+ if (ERROR_IF_POPUP_WINDOW)
+ return;
+ wp = find_popup_win(id);
if (wp != NULL)
popup_close_and_callback(wp, &argvars[1]);
}
let winid = popup_create('some text', {})
call assert_fails('call win_execute(winid, winnr() .. "close")', 'E994')
call popup_clear()
+
+ let winid = popup_create('some text', {})
+ call assert_fails('call win_execute(winid, printf("normal! :\<C-u>call popup_close(%d)\<CR>", winid))', 'E994')
+ call popup_clear()
endfunc
func Test_win_execute_not_allowed()