diff options
| author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-06-26 13:29:46 -0300 |
|---|---|---|
| committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-07-17 11:30:01 -0300 |
| commit | 0e20afe37e7ad99036ab98356a3f72281e1a8017 (patch) | |
| tree | 1299f1a8e7878311bcf2bd4aa74a35fc4923cff0 /src/nvim/os/msgpack_rpc.c | |
| parent | 5d9c73ce70420321b92519d56c1c9e03fea94ecc (diff) | |
| download | rneovim-0e20afe37e7ad99036ab98356a3f72281e1a8017.tar.gz rneovim-0e20afe37e7ad99036ab98356a3f72281e1a8017.tar.bz2 rneovim-0e20afe37e7ad99036ab98356a3f72281e1a8017.zip | |
wstream: Pass WBuffer refcount as a constructor parameter
This is required to handle broadcasting when the first write fails.
Ref: https://github.com/tarruda/neovim/commit/11916b6b595421ce2ece10f7aa40757cc4937c0c#commitcomment-6792287
Diffstat (limited to 'src/nvim/os/msgpack_rpc.c')
| -rw-r--r-- | src/nvim/os/msgpack_rpc.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/nvim/os/msgpack_rpc.c b/src/nvim/os/msgpack_rpc.c index 85569372da..402e741370 100644 --- a/src/nvim/os/msgpack_rpc.c +++ b/src/nvim/os/msgpack_rpc.c @@ -113,7 +113,8 @@ void msgpack_rpc_error(char *msg, msgpack_packer *res) WBuffer *serialize_request(uint64_t request_id, String method, Object arg, - msgpack_sbuffer *sbuffer) + msgpack_sbuffer *sbuffer, + size_t refcount) FUNC_ATTR_NONNULL_ARG(4) { msgpack_packer pac; @@ -130,6 +131,7 @@ WBuffer *serialize_request(uint64_t request_id, msgpack_rpc_from_object(arg, &pac); WBuffer *rv = wstream_new_buffer(xmemdup(sbuffer->data, sbuffer->size), sbuffer->size, + refcount, free); msgpack_rpc_free_object(arg); msgpack_sbuffer_clear(sbuffer); @@ -165,6 +167,7 @@ WBuffer *serialize_response(uint64_t response_id, WBuffer *rv = wstream_new_buffer(xmemdup(sbuffer->data, sbuffer->size), sbuffer->size, + 1, // responses only go though 1 channel free); msgpack_rpc_free_object(arg); msgpack_sbuffer_clear(sbuffer); @@ -190,6 +193,7 @@ WBuffer *serialize_metadata(uint64_t id, msgpack_pack_raw_body(&pac, msgpack_metadata, msgpack_metadata_size); WBuffer *rv = wstream_new_buffer(xmemdup(sbuffer->data, sbuffer->size), sbuffer->size, + 1, free); msgpack_sbuffer_clear(sbuffer); return rv; |
