mirror of
https://github.com/neovim/neovim.git
synced 2025-09-13 23:08:16 +00:00
eval/decode: Accept \r
as space character
This commit is contained in:
@@ -617,7 +617,7 @@ int json_decode_string(const char *const buf, const size_t buf_len,
|
||||
{
|
||||
const char *p = buf;
|
||||
const char *const e = buf + buf_len;
|
||||
while (p < e && (*p == ' ' || *p == '\t' || *p == '\n')) {
|
||||
while (p < e && (*p == ' ' || *p == TAB || *p == NL || *p == CAR)) {
|
||||
p++;
|
||||
}
|
||||
if (p == e) {
|
||||
@@ -730,7 +730,8 @@ json_decode_string_cycle_start:
|
||||
}
|
||||
case ' ':
|
||||
case TAB:
|
||||
case NL: {
|
||||
case NL:
|
||||
case CAR: {
|
||||
continue;
|
||||
}
|
||||
case 'n': {
|
||||
@@ -870,7 +871,8 @@ json_decode_string_after_cycle:
|
||||
switch (*p) {
|
||||
case NL:
|
||||
case ' ':
|
||||
case TAB: {
|
||||
case TAB:
|
||||
case CAR: {
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
|
@@ -515,6 +515,12 @@ describe('json_decode() function', function()
|
||||
eq('Vim(call):E474: Attempt to decode a blank string',
|
||||
exc_exec('call json_decode(" \\t\\n \\n\\t\\t \\n\\t\\n \\n \\t\\n\\t ")'))
|
||||
end)
|
||||
|
||||
it('accepts all spaces in every position where space may be put', function()
|
||||
local s = ' \t\n\r \t\r\n \n\t\r \n\r\t \r\t\n \r\n\t\t \n\r\t \r\n\t\n \r\t\n\r \t\r \n\t\r\n \n \t\r\n \r\t\n\t \r\n\t\r \n\r \t\n\r\t \r \t\n\r \n\t\r\t \n\r\t\n \r\n \t\r\n\t'
|
||||
local str = ('%s{%s"key"%s:%s[%s"val"%s,%s"val2"%s]%s,%s"key2"%s:%s1%s}%s'):gsub('%%s', s)
|
||||
eq({key={'val', 'val2'}, key2=1}, funcs.json_decode(str))
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('json_encode() function', function()
|
||||
|
Reference in New Issue
Block a user