Mercurial > vim
comparison src/eval.c @ 10259:a09db7a4afe0 v8.0.0027
commit https://github.com/vim/vim/commit/dc0ccaee68ca24d10050117fbec757ad33590a17
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Oct 9 17:28:01 2016 +0200
patch 8.0.0027
Problem: A channel is closed when reading on stderr or stdout fails, but
there may still be something to read on another part.
Solution: Turn ch_to_be_closed into a bitfield. (Ozaki Kiichi)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 09 Oct 2016 17:30:04 +0200 |
parents | ad6851687158 |
children | 66f1b5bf3fa6 |
comparison
equal
deleted
inserted
replaced
10258:a99c7e02b61a | 10259:a09db7a4afe0 |
---|---|
5620 } | 5620 } |
5621 } | 5621 } |
5622 else if (tv->v_type == VAR_CHANNEL) | 5622 else if (tv->v_type == VAR_CHANNEL) |
5623 { | 5623 { |
5624 channel_T *ch =tv->vval.v_channel; | 5624 channel_T *ch =tv->vval.v_channel; |
5625 int part; | 5625 ch_part_T part; |
5626 typval_T dtv; | 5626 typval_T dtv; |
5627 jsonq_T *jq; | 5627 jsonq_T *jq; |
5628 cbq_T *cq; | 5628 cbq_T *cq; |
5629 | 5629 |
5630 if (ch != NULL && ch->ch_copyID != copyID) | 5630 if (ch != NULL && ch->ch_copyID != copyID) |
5631 { | 5631 { |
5632 ch->ch_copyID = copyID; | 5632 ch->ch_copyID = copyID; |
5633 for (part = PART_SOCK; part <= PART_IN; ++part) | 5633 for (part = PART_SOCK; part < PART_COUNT; ++part) |
5634 { | 5634 { |
5635 for (jq = ch->ch_part[part].ch_json_head.jq_next; jq != NULL; | 5635 for (jq = ch->ch_part[part].ch_json_head.jq_next; jq != NULL; |
5636 jq = jq->jq_next) | 5636 jq = jq->jq_next) |
5637 set_ref_in_item(jq->jq_value, copyID, ht_stack, list_stack); | 5637 set_ref_in_item(jq->jq_value, copyID, ht_stack, list_stack); |
5638 for (cq = ch->ch_part[part].ch_cb_head.cq_next; cq != NULL; | 5638 for (cq = ch->ch_part[part].ch_cb_head.cq_next; cq != NULL; |