patch 7.4.1451
Problem: Vim hangs when a channel has a callback but isn't referenced.
Solution: Have channel_unref() only return TRUE when the channel was
actually freed.
diff --git a/src/channel.c b/src/channel.c
index c6f94ee..5e8c6bd 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -334,12 +334,17 @@
* Close a channel and free all its resources if there is no further action
* possible, there is no callback to be invoked or the associated job was
* killed.
+ * Return TRUE if the channel was freed.
*/
- void
+ int
channel_may_free(channel_T *channel)
{
if (!channel_still_useful(channel))
+ {
channel_free(channel);
+ return TRUE;
+ }
+ return FALSE;
}
/*