commit 57c6b61cf2d10af46eb56e439db9f7c071426865
parent 94c21c22dcf6b1afdb25a250c08bd858d481429b
Author: zeertzjq <zeertzjq@outlook.com>
Date: Sat, 21 Feb 2026 05:50:54 +0800
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.
Diffstat:
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git 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)