diff options
-rw-r--r-- | src/nvim/winfloat.c | 2 | ||||
-rw-r--r-- | test/functional/ui/float_spec.lua | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/nvim/winfloat.c b/src/nvim/winfloat.c index f7e9128599..fdb65ad614 100644 --- a/src/nvim/winfloat.c +++ b/src/nvim/winfloat.c @@ -59,7 +59,7 @@ win_T *win_new_float(win_T *wp, bool last, WinConfig fconfig, Error *err) if (!tp) { return NULL; } - tp_last = tp->tp_lastwin; + tp_last = tp == curtab ? lastwin : tp->tp_lastwin; while (tp_last->w_floating && tp_last->w_prev) { tp_last = tp_last->w_prev; } diff --git a/test/functional/ui/float_spec.lua b/test/functional/ui/float_spec.lua index b2ed5f5a5f..9b77cb4014 100644 --- a/test/functional/ui/float_spec.lua +++ b/test/functional/ui/float_spec.lua @@ -662,6 +662,22 @@ describe('float window', function() screen:detach() end) + it('no crash with relative="win" after %bdelete #30569', function() + exec([[ + botright vsplit + %bdelete + ]]) + api.nvim_open_win(0, false, { + relative = 'win', + win = 0, + row = 0, + col = 5, + width = 5, + height = 5, + }) + assert_alive() + end) + describe('with only one tabpage,', function() local float_opts = {relative = 'editor', row = 1, col = 1, width = 1, height = 1} local old_buf, old_win |