diff options
Diffstat (limited to 'src/nvim/os/msgpack_rpc.c')
-rw-r--r-- | src/nvim/os/msgpack_rpc.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/nvim/os/msgpack_rpc.c b/src/nvim/os/msgpack_rpc.c index d7ffa6f559..8ca1e0a8c0 100644 --- a/src/nvim/os/msgpack_rpc.c +++ b/src/nvim/os/msgpack_rpc.c @@ -147,9 +147,13 @@ bool msgpack_rpc_to_float(msgpack_object *obj, Float *arg) bool msgpack_rpc_to_string(msgpack_object *obj, String *arg) { - arg->data = (char *)obj->via.raw.ptr; + if (obj->type != MSGPACK_OBJECT_RAW) { + return false; + } + + arg->data = xmemdup(obj->via.raw.ptr, obj->via.raw.size); arg->size = obj->via.raw.size; - return obj->type == MSGPACK_OBJECT_RAW; + return true; } bool msgpack_rpc_to_object(msgpack_object *obj, Object *arg) @@ -328,6 +332,15 @@ void msgpack_rpc_from_dictionary(Dictionary result, msgpack_packer *res) } } +void msgpack_rpc_free_string(String value) +{ + if (!value.data) { + return; + } + + free(value.data); +} + void msgpack_rpc_free_object(Object value) { switch (value.type) { |