mirror of
https://github.com/neovim/neovim.git
synced 2026-02-08 21:08:47 +00:00
fix(lua): close vim.defer_fn() timer if vim.schedule() failed (#37647)
Problem: Using vim.defer_fn() just before Nvim exit leaks luv handles. Solution: Make vim.schedule() return an error message if scheduling failed. Make vim.defer_fn() close timer if vim.schedule() failed.
This commit is contained in:
@@ -1786,6 +1786,24 @@ describe('lua stdlib', function()
|
||||
eq(true, exec_lua [[return vim.g.test]])
|
||||
end)
|
||||
|
||||
it('nested vim.defer_fn does not leak handles on exit #19727', function()
|
||||
n.expect_exit(exec_lua, function()
|
||||
vim.defer_fn(function()
|
||||
vim.defer_fn(function()
|
||||
vim.defer_fn(function() end, 0)
|
||||
end, 0)
|
||||
end, 0)
|
||||
vim.cmd('qall')
|
||||
end)
|
||||
end)
|
||||
|
||||
it('vim.defer_fn with timeout does not leak handles on exit', function()
|
||||
n.expect_exit(exec_lua, function()
|
||||
vim.defer_fn(function() end, 50)
|
||||
vim.cmd('qall')
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('vim.region', function()
|
||||
it('charwise', function()
|
||||
insert(dedent([[
|
||||
|
||||
Reference in New Issue
Block a user