mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge pull request #3869 from oni-link/fix.issue.3844
helpers.c: Handle msgpack str/bin objects with length 0 correctly
This commit is contained in:
commit
d8a2007d47
@ -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;
|
||||
}
|
||||
|
@ -32,6 +32,26 @@ describe('server -> client', function()
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('empty string handling in arrays', function()
|
||||
-- Because the msgpack encoding for an empty string was interpreted as an
|
||||
-- error, msgpack arrays with an empty string looked like
|
||||
-- [..., '', 0, ..., 0] after the conversion, regardless of the array
|
||||
-- elements following the empty string.
|
||||
it('works', function()
|
||||
local function on_setup()
|
||||
eq({1, 2, '', 3, 'asdf'}, eval('rpcrequest('..cid..', "nstring")'))
|
||||
stop()
|
||||
end
|
||||
|
||||
local function on_request(method, args)
|
||||
-- No need to evaluate the args, we are only interested in
|
||||
-- a response that contains an array with an empty string.
|
||||
return {1, 2, '', 3, 'asdf'}
|
||||
end
|
||||
run(on_request, nil, on_setup)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('recursive call', function()
|
||||
it('works', function()
|
||||
local function on_setup()
|
||||
|
Loading…
Reference in New Issue
Block a user