Patch 7.4.1413
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.
Files: src/eval.c, src/channel.c, src/netbeans.c, src/proto/channel.pro
*** ../vim-7.4.1412/src/eval.c 2016-02-23 22:07:28.164881439 +0100
--- src/eval.c 2016-02-24 20:37:30.508962367 +0100
***************
*** 10213,10219 ****
channel_T *channel = get_channel_arg(&argvars[0]);
if (channel != NULL)
! channel_close(channel);
}
# ifdef FEAT_JOB
--- 10213,10219 ----
channel_T *channel = get_channel_arg(&argvars[0]);
if (channel != NULL)
! channel_close(channel, FALSE);
}
# ifdef FEAT_JOB
*** ../vim-7.4.1412/src/channel.c 2016-02-23 19:33:57.421544921 +0100
--- src/channel.c 2016-02-24 20:37:16.305109742 +0100
***************
*** 312,318 ****
void
channel_free(channel_T *channel)
{
! channel_close(channel);
if (channel->ch_next != NULL)
channel->ch_next->ch_prev = channel->ch_prev;
if (channel->ch_prev == NULL)
--- 312,318 ----
void
channel_free(channel_T *channel)
{
! channel_close(channel, TRUE);
if (channel->ch_next != NULL)
channel->ch_next->ch_prev = channel->ch_prev;
if (channel->ch_prev == NULL)
***************
*** 1466,1472 ****
* This does not trigger the close callback.
*/
void
! channel_close(channel_T *channel)
{
ch_log(channel, "Closing channel");
--- 1466,1472 ----
* This does not trigger the close callback.
*/
void
! channel_close(channel_T *channel, int invoke_close_cb)
{
ch_log(channel, "Closing channel");
***************
*** 1497,1503 ****
}
#endif
! if (channel->ch_close_cb != NULL)
{
typval_T argv[1];
typval_T rettv;
--- 1497,1503 ----
}
#endif
! if (invoke_close_cb && channel->ch_close_cb != NULL)
{
typval_T argv[1];
typval_T rettv;
***************
*** 1757,1763 ****
/* 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);
if (channel->ch_nb_close_cb != NULL)
(*channel->ch_nb_close_cb)();
--- 1757,1763 ----
/* 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, TRUE);
if (channel->ch_nb_close_cb != NULL)
(*channel->ch_nb_close_cb)();
*** ../vim-7.4.1412/src/netbeans.c 2016-02-23 17:13:56.885032246 +0100
--- src/netbeans.c 2016-02-24 20:37:39.612867904 +0100
***************
*** 100,106 ****
netbeans_send_disconnect();
if (nb_channel != NULL)
/* Close the socket and remove the input handlers. */
! channel_close(nb_channel);
nb_channel = NULL;
}
--- 100,106 ----
netbeans_send_disconnect();
if (nb_channel != NULL)
/* Close the socket and remove the input handlers. */
! channel_close(nb_channel, TRUE);
nb_channel = NULL;
}
*** ../vim-7.4.1412/src/proto/channel.pro 2016-02-23 13:20:18.466462173
+0100
--- src/proto/channel.pro 2016-02-24 20:36:40.813477955 +0100
***************
*** 17,23 ****
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);
char_u *channel_peek(channel_T *channel, int part);
void channel_clear(channel_T *channel);
void channel_free_all(void);
--- 17,23 ----
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, int invoke_close_cb);
char_u *channel_peek(channel_T *channel, int part);
void channel_clear(channel_T *channel);
void channel_free_all(void);
*** ../vim-7.4.1412/src/version.c 2016-02-24 12:57:46.460114833 +0100
--- src/version.c 2016-02-24 20:42:23.313929197 +0100
***************
*** 750,751 ****
--- 750,753 ----
{ /* Add new patch number below this line */
+ /**/
+ 1413,
/**/
--
An indication you must be a manager:
You feel sorry for Dilbert's boss.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.