fix(api/nvim_win_call): share common win_execute logic

We have to be sure that the bugs fixed in the previous patches also apply to
nvim_win_call.

Checking v8.1.2124 and v8.2.4026 is especially important as these patches were
only applied to win_execute, but nvim_win_call is also affected by the same
bugs. A lot of win_execute's logic can be shared with nvim_win_call, so factor
it out into a common macro to reduce the possibility of this happening again.
This commit is contained in:
Sean Dewar
2022-01-08 12:27:35 +00:00
parent 6820420d3e
commit 452b46fcf7
4 changed files with 97 additions and 23 deletions

View File

@@ -457,12 +457,10 @@ Object nvim_win_call(Window window, LuaRef fun, Error *err)
try_start();
Object res = OBJECT_INIT;
switchwin_T switchwin;
if (switch_win_noblock(&switchwin, win, tabpage, true) == OK) {
WIN_EXECUTE(win, tabpage, {
Array args = ARRAY_DICT_INIT;
res = nlua_call_ref(fun, NULL, args, true, err);
}
restore_win_noblock(&switchwin, true);
});
try_end(err);
return res;
}