diff src/channel.c @ 26217:d25c0b0aad7d v8.2.3640

patch 8.2.3640: freeze when calling term_wait() in a close callback Commit: https://github.com/vim/vim/commit/eea32afdb83ae281a63152f7494f79ec7e45ff55 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Nov 21 14:51:13 2021 +0000 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 https://github.com/vim/vim/issues/9152)
author Bram Moolenaar <Bram@vim.org>
date Sun, 21 Nov 2021 16:00:04 +0100
parents ea0820d05257
children b18f3b0f317c
line wrap: on
line diff
--- a/src/channel.c
+++ b/src/channel.c
@@ -3156,6 +3156,10 @@ channel_close(channel_T *channel, int in
     {
 	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,