aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoroni-link <knil.ino@gmail.com>2015-12-19 11:29:39 +0100
committeroni-link <knil.ino@gmail.com>2015-12-21 00:23:53 +0100
commit8373aaf44e6a64dda135a11f275f4616afa23b63 (patch)
tree5e4a8950db5cc3b5d430e1cb8160c0c1aeca98f5 /src
parente123675bcce886c1da3d917fbd88ab38cda7eba5 (diff)
downloadrneovim-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.c7
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;
}