mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 10:45:16 -07:00
fix(lua): avoid vim._with() double-free with cmdmod (#31505)
This commit is contained in:
parent
7008487b83
commit
fe1e2eff06
@ -619,6 +619,7 @@ static int nlua_with(lua_State *L)
|
|||||||
int rets = 0;
|
int rets = 0;
|
||||||
|
|
||||||
cmdmod_T save_cmdmod = cmdmod;
|
cmdmod_T save_cmdmod = cmdmod;
|
||||||
|
CLEAR_FIELD(cmdmod);
|
||||||
cmdmod.cmod_flags = flags;
|
cmdmod.cmod_flags = flags;
|
||||||
apply_cmdmod(&cmdmod);
|
apply_cmdmod(&cmdmod);
|
||||||
|
|
||||||
|
@ -1621,4 +1621,21 @@ describe('vim._with', function()
|
|||||||
matches('Invalid buffer', get_error('{ buf = -1 }, function() end'))
|
matches('Invalid buffer', get_error('{ buf = -1 }, function() end'))
|
||||||
matches('Invalid window', get_error('{ win = -1 }, function() end'))
|
matches('Invalid window', get_error('{ win = -1 }, function() end'))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('no double-free when called from :filter browse oldfiles #31501', function()
|
||||||
|
exec_lua([=[
|
||||||
|
vim.api.nvim_create_autocmd('BufEnter', {
|
||||||
|
callback = function()
|
||||||
|
vim._with({ lockmarks = true }, function() end)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
vim.cmd([[
|
||||||
|
let v:oldfiles = ['Xoldfile']
|
||||||
|
call nvim_input('1<CR>')
|
||||||
|
noswapfile filter /Xoldfile/ browse oldfiles
|
||||||
|
]])
|
||||||
|
]=])
|
||||||
|
n.assert_alive()
|
||||||
|
eq('Xoldfile', fn.bufname('%'))
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
Loading…
Reference in New Issue
Block a user