]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 7.4.1413 v7.4.1413
authorBram Moolenaar <Bram@vim.org>
Wed, 24 Feb 2016 19:43:06 +0000 (20:43 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 24 Feb 2016 19:43:06 +0000 (20:43 +0100)
Problem:    When calling ch_close() the close callback is invoked, even though
            the docs say it isn't. (Christian J. Robinson)
Solution:   Don't call the close callback.

src/channel.c
src/eval.c
src/netbeans.c
src/proto/channel.pro
src/version.c

index 0d46c587e148b3a9c7977a61008e47b3b5d1673e..8044c4d2d371be38493b124e0cf82739efdbafd3 100644 (file)
@@ -312,7 +312,7 @@ add_channel(void)
     void
 channel_free(channel_T *channel)
 {
-    channel_close(channel);
+    channel_close(channel, TRUE);
     if (channel->ch_next != NULL)
        channel->ch_next->ch_prev = channel->ch_prev;
     if (channel->ch_prev == NULL)
@@ -1466,7 +1466,7 @@ channel_status(channel_T *channel)
  * This does not trigger the close callback.
  */
     void
-channel_close(channel_T *channel)
+channel_close(channel_T *channel, int invoke_close_cb)
 {
     ch_log(channel, "Closing channel");
 
@@ -1497,7 +1497,7 @@ channel_close(channel_T *channel)
     }
 #endif
 
-    if (channel->ch_close_cb != NULL)
+    if (invoke_close_cb && channel->ch_close_cb != NULL)
     {
          typval_T      argv[1];
          typval_T      rettv;
@@ -1757,7 +1757,7 @@ channel_read(channel_T *channel, int part, char *func)
        /* TODO: When reading from stdout is not possible, should we try to
         * keep stdin and stderr open?  Probably not, assume the other side
         * has died. */
-       channel_close(channel);
+       channel_close(channel, TRUE);
        if (channel->ch_nb_close_cb != NULL)
            (*channel->ch_nb_close_cb)();
 
index b04b6c2825a9510728cdbeeff7682b4ac2bce80f..db9c6b7543c069c5e1a0c78c88254919df703897 100644 (file)
@@ -10213,7 +10213,7 @@ f_ch_close(typval_T *argvars, typval_T *rettv UNUSED)
     channel_T *channel = get_channel_arg(&argvars[0]);
 
     if (channel != NULL)
-       channel_close(channel);
+       channel_close(channel, FALSE);
 }
 
 # ifdef FEAT_JOB
index 44a725e1edc6a530143eea80228d04d223a32f98..441ca760659f54cf07d8b98177f88c7de023b2bc 100644 (file)
@@ -100,7 +100,7 @@ netbeans_close(void)
        netbeans_send_disconnect();
        if (nb_channel != NULL)
            /* Close the socket and remove the input handlers. */
-           channel_close(nb_channel);
+           channel_close(nb_channel, TRUE);
        nb_channel = NULL;
     }
 
index 81935bf9a559a87b14f6055071e4217d7b0a75ff..96b51b9773ce988179f2af175f358c3d69418f2f 100644 (file)
@@ -17,7 +17,7 @@ int channel_collapse(channel_T *channel, int part);
 int channel_can_write_to(channel_T *channel);
 int channel_is_open(channel_T *channel);
 char *channel_status(channel_T *channel);
-void channel_close(channel_T *channel);
+void channel_close(channel_T *channel, int invoke_close_cb);
 char_u *channel_peek(channel_T *channel, int part);
 void channel_clear(channel_T *channel);
 void channel_free_all(void);
index 84085cfae72237af50b6c59de71853a0f84d22bd..3d7ed57e1a281faeed519580ee1e43eac6e1c894 100644 (file)
@@ -748,6 +748,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1413,
 /**/
     1412,
 /**/