diff options
author | oni-link <knil.ino@gmail.com> | 2015-12-19 11:29:39 +0100 |
---|---|---|
committer | oni-link <knil.ino@gmail.com> | 2015-12-21 00:23:53 +0100 |
commit | 8373aaf44e6a64dda135a11f275f4616afa23b63 (patch) | |
tree | 5e4a8950db5cc3b5d430e1cb8160c0c1aeca98f5 /src | |
parent | e123675bcce886c1da3d917fbd88ab38cda7eba5 (diff) | |
download | rneovim-8373aaf44e6a64dda135a11f275f4616afa23b63.tar.gz rneovim-8373aaf44e6a64dda135a11f275f4616afa23b63.tar.bz2 rneovim-8373aaf44e6a64dda135a11f275f4616afa23b63.zip |
helpers.c: Handle msgpack str/bin objects with length 0 correctly
When converting a msgpack object to a String object, strings (and byte
arrays) with length 0 are handled as errors. This is fixed by
always using the msgpack data pointer as a valid pointer. For a NULL
pointer there is nothing to copy.
Test by @snoe
Fixes #3844
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/msgpack_rpc/helpers.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/nvim/msgpack_rpc/helpers.c b/src/nvim/msgpack_rpc/helpers.c index a119c4653a..5ef81721d4 100644 --- a/src/nvim/msgpack_rpc/helpers.c +++ b/src/nvim/msgpack_rpc/helpers.c @@ -94,10 +94,9 @@ bool msgpack_rpc_to_string(msgpack_object *obj, String *arg) FUNC_ATTR_NONNULL_ALL { if (obj->type == MSGPACK_OBJECT_BIN || obj->type == MSGPACK_OBJECT_STR) { - if (obj->via.bin.ptr == NULL) { - return false; - } - arg->data = xmemdupz(obj->via.bin.ptr, obj->via.bin.size); + arg->data = obj->via.bin.ptr != NULL + ? xmemdupz(obj->via.bin.ptr, obj->via.bin.size) + : NULL; arg->size = obj->via.bin.size; return true; } |