mirror of
https://github.com/neovim/neovim.git
synced 2025-09-18 01:08:20 +00:00
vim-patch:8.2.3609: internal error when ModeChanged is triggered recursively
Problem: Internal error when ModeChanged is triggered when v:event is
already in use.
Solution: Save and restore v:event if needed.
3075a45592
In the vim codebase there is no occurrence of get_vim_var_dict(VV_EVENT)
after the above patch, so in order to hold the same invariant in the
neovim codebase we needed to replace more occurrences than the related
vim patch.
This commit is contained in:
@@ -2792,8 +2792,9 @@ static void do_autocmd_textyankpost(oparg_T *oap, yankreg_T *reg)
|
||||
|
||||
recursive = true;
|
||||
|
||||
save_v_event_T save_v_event;
|
||||
// Set the v:event dictionary with information about the yank.
|
||||
dict_T *dict = get_vim_var_dict(VV_EVENT);
|
||||
dict_T *dict = get_v_event(&save_v_event);
|
||||
|
||||
// The yanked text contents.
|
||||
list_T *const list = tv_list_alloc((ptrdiff_t)reg->y_size);
|
||||
@@ -2830,7 +2831,7 @@ static void do_autocmd_textyankpost(oparg_T *oap, yankreg_T *reg)
|
||||
textlock++;
|
||||
apply_autocmds(EVENT_TEXTYANKPOST, NULL, NULL, false, curbuf);
|
||||
textlock--;
|
||||
tv_dict_clear(dict);
|
||||
restore_v_event(dict, &save_v_event);
|
||||
|
||||
recursive = false;
|
||||
}
|
||||
|
Reference in New Issue
Block a user