From 57c6b61cf2d10af46eb56e439db9f7c071426865 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sat, 21 Feb 2026 05:50:54 +0800 Subject: [PATCH] fix(event-loop): don't call uv_stop() when loop isn't running (#37984) Otherwise it will cause the next uv_run() to stop immediately. --- src/nvim/event/loop.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/nvim/event/loop.c b/src/nvim/event/loop.c index c750973671..319f3701d7 100644 --- a/src/nvim/event/loop.c +++ b/src/nvim/event/loop.c @@ -124,7 +124,11 @@ void loop_on_put(MultiQueue *queue, void *data) // of the queues, the event would only be processed after the poll // returns (user hits a key for example). To avoid this scenario, we call // uv_stop when a event is enqueued. - uv_stop(&loop->uv); + // Only call uv_stop() when the loop is actually running, otherwise it will + // instead make the next uv_run() stop immediately. + if (loop->recursive) { + uv_stop(&loop->uv); + } } #if !defined(EXITFREE)