mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
eval/decode.c: Avoid NULL arg to memchr() #7332
Clang complains because memchr has undefined behavior if the ptr is NULL, even if len==0. Helped-by: Nikolai Aleksandrovich Pavlov <kp-pav@yandex.ru>
This commit is contained in:
parent
d31b94ac20
commit
8f03014e88
@ -266,7 +266,7 @@ typval_T decode_string(const char *const s, const size_t len,
|
|||||||
{
|
{
|
||||||
assert(s != NULL || len == 0);
|
assert(s != NULL || len == 0);
|
||||||
const bool really_hasnul = (hasnul == kNone
|
const bool really_hasnul = (hasnul == kNone
|
||||||
? memchr(s, NUL, len) != NULL
|
? ((s != NULL) && (memchr(s, NUL, len) != NULL))
|
||||||
: (bool)hasnul);
|
: (bool)hasnul);
|
||||||
if (really_hasnul) {
|
if (really_hasnul) {
|
||||||
list_T *const list = tv_list_alloc();
|
list_T *const list = tv_list_alloc();
|
||||||
|
@ -776,4 +776,11 @@ describe('json_encode() function', function()
|
|||||||
it('can dump NULL dictionary', function()
|
it('can dump NULL dictionary', function()
|
||||||
eq('{}', eval('json_encode(v:_null_dict)'))
|
eq('{}', eval('json_encode(v:_null_dict)'))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('fails to parse NULL strings and lists', function()
|
||||||
|
eq('Vim(call):E474: Attempt to decode a blank string',
|
||||||
|
exc_exec('call json_decode($XXX_UNEXISTENT_VAR_XXX)'))
|
||||||
|
eq('Vim(call):E474: Attempt to decode a blank string',
|
||||||
|
exc_exec('call json_decode(v:_null_list)'))
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
Loading…
Reference in New Issue
Block a user