From 9c5ade9212d897db590aeb6a2a5340e73ffe44d0 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 13 Feb 2026 21:02:40 +0800 Subject: fix: wait() checks condition twice on each interval (#37837) Problem: wait() checks condition twice on each interval. Solution: Don't schedule the due callback. Also fix memory leak when Nvim exits while waiting. No test that the condition isn't checked twice, as testing for that can be flaky when there are libuv events from other sources. --- test/functional/lua/vim_spec.lua | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'test/functional/lua/vim_spec.lua') diff --git a/test/functional/lua/vim_spec.lua b/test/functional/lua/vim_spec.lua index e31c215817..049398fc74 100644 --- a/test/functional/lua/vim_spec.lua +++ b/test/functional/lua/vim_spec.lua @@ -2379,6 +2379,15 @@ stack traceback: ) end) + it('does not leak when Nvim exits while waiting', function() + n.expect_exit(500, exec_lua, function() + vim.defer_fn(function() + vim.cmd('qall!') + end, 10) + vim.wait(10000) + end) + end) + it('plays nice with `not` when fails', function() eq( true, -- cgit