patch 8.2.3640: freeze when calling term_wait() in a close callback
Problem: Freeze when calling term_wait() in a close callback.
Solution: Set a "closing" flag to tell term_wait() to return. (closes #9152)
diff --git a/src/channel.c b/src/channel.c
index b46205e..7514d63 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -3156,6 +3156,10 @@
{
ch_part_T part;
+#ifdef FEAT_TERMINAL
+ // let the terminal know it is closing to avoid getting stuck
+ term_channel_closing(channel);
+#endif
// Invoke callbacks and flush buffers before the close callback.
if (channel->ch_close_cb.cb_name != NULL)
ch_log(channel,