Permalink
Browse files

patch 8.0.1391: encoding empty string to JSON sometimes gives "null"

Problem:    Encoding empty string to JSON sometimes gives "null".
Solution:   Handle NULL string as empty string. (closes #2446)
  • Loading branch information...
brammool committed Dec 15, 2017
1 parent 4697399 commit b29d328eb403a243431f4d0d5b360b4ac46bbc3e
Showing with 9 additions and 3 deletions.
  1. +3 −3 src/json.c
  2. +4 −0 src/testdir/test_json.vim
  3. +2 −0 src/version.c
View
@@ -92,7 +92,7 @@ write_string(garray_T *gap, char_u *str)
char_u numbuf[NUMBUFLEN];
if (res == NULL)
ga_concat(gap, (char_u *)"null");
ga_concat(gap, (char_u *)"\"\"");
else
{
#if defined(FEAT_MBYTE) && defined(USE_ICONV)
@@ -237,7 +237,7 @@ json_encode_item(garray_T *gap, typval_T *val, int copyID, int options)
case VAR_LIST:
l = val->vval.v_list;
if (l == NULL)
ga_concat(gap, (char_u *)"null");
ga_concat(gap, (char_u *)"[]");
else
{
if (l->lv_copyID == copyID)
@@ -272,7 +272,7 @@ json_encode_item(garray_T *gap, typval_T *val, int copyID, int options)
case VAR_DICT:
d = val->vval.v_dict;
if (d == NULL)
ga_concat(gap, (char_u *)"null");
ga_concat(gap, (char_u *)"{}");
else
{
if (d->dv_copyID == copyID)
@@ -103,6 +103,10 @@ func Test_json_encode()
call assert_fails('echo json_encode(function("tr"))', 'E474:')
call assert_fails('echo json_encode([function("tr")])', 'E474:')
call assert_equal('{"a":""}', json_encode({'a': test_null_string()}))
call assert_equal('{"a":[]}', json_encode({"a": test_null_list()}))
call assert_equal('{"a":{}}', json_encode({"a": test_null_dict()}))
silent! let res = json_encode(function("tr"))
call assert_equal("", res)
endfunc
View
@@ -771,6 +771,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1391,
/**/
1390,
/**/

0 comments on commit b29d328

Please sign in to comment.