Mercurial > vim
diff src/eval.c @ 9007:d5c6f1c5cd28 v7.4.1789
commit https://github.com/vim/vim/commit/437905c25d4cedfa16d0f87392e4a000d22362b7
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Apr 26 19:01:05 2016 +0200
patch 7.4.1789
Problem: Cannot use ch_read() in the close callback.
Solution: Do not discard the channel if there is readahead. Do not discard
readahead if there is a close callback.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 26 Apr 2016 19:15:06 +0200 |
parents | 2085167ab1b0 |
children | 773d627cac0b |
line wrap: on
line diff
--- a/src/eval.c +++ b/src/eval.c @@ -10305,7 +10305,7 @@ f_ceil(typval_T *argvars, typval_T *rett static void f_ch_close(typval_T *argvars, typval_T *rettv UNUSED) { - channel_T *channel = get_channel_arg(&argvars[0], TRUE); + channel_T *channel = get_channel_arg(&argvars[0], TRUE, FALSE, 0); if (channel != NULL) { @@ -10320,7 +10320,7 @@ f_ch_close(typval_T *argvars, typval_T * static void f_ch_getbufnr(typval_T *argvars, typval_T *rettv) { - channel_T *channel = get_channel_arg(&argvars[0], TRUE); + channel_T *channel = get_channel_arg(&argvars[0], FALSE, FALSE, 0); rettv->vval.v_number = -1; if (channel != NULL) @@ -10347,7 +10347,7 @@ f_ch_getbufnr(typval_T *argvars, typval_ static void f_ch_getjob(typval_T *argvars, typval_T *rettv) { - channel_T *channel = get_channel_arg(&argvars[0], TRUE); + channel_T *channel = get_channel_arg(&argvars[0], FALSE, FALSE, 0); if (channel != NULL) { @@ -10364,7 +10364,7 @@ f_ch_getjob(typval_T *argvars, typval_T static void f_ch_info(typval_T *argvars, typval_T *rettv UNUSED) { - channel_T *channel = get_channel_arg(&argvars[0], TRUE); + channel_T *channel = get_channel_arg(&argvars[0], FALSE, FALSE, 0); if (channel != NULL && rettv_dict_alloc(rettv) != FAIL) channel_info(channel, rettv->vval.v_dict); @@ -10380,7 +10380,7 @@ f_ch_log(typval_T *argvars, typval_T *re channel_T *channel = NULL; if (argvars[1].v_type != VAR_UNKNOWN) - channel = get_channel_arg(&argvars[1], TRUE); + channel = get_channel_arg(&argvars[1], FALSE, FALSE, 0); ch_log(channel, (char *)msg); } @@ -10476,7 +10476,7 @@ f_ch_setoptions(typval_T *argvars, typva channel_T *channel; jobopt_T opt; - channel = get_channel_arg(&argvars[0], TRUE); + channel = get_channel_arg(&argvars[0], FALSE, FALSE, 0); if (channel == NULL) return; clear_job_options(&opt); @@ -10498,7 +10498,7 @@ f_ch_status(typval_T *argvars, typval_T rettv->v_type = VAR_STRING; rettv->vval.v_string = NULL; - channel = get_channel_arg(&argvars[0], FALSE); + channel = get_channel_arg(&argvars[0], FALSE, FALSE, 0); rettv->vval.v_string = vim_strsave((char_u *)channel_status(channel)); } #endif