]> granicus.if.org Git - vim/commitdiff
patch 8.0.0309: cannot use an empty key in json v8.0.0309
authorBram Moolenaar <Bram@vim.org>
Sun, 5 Feb 2017 15:34:43 +0000 (16:34 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 5 Feb 2017 15:34:43 +0000 (16:34 +0100)
Problem:    Cannot use an empty key in json.
Solution:   Allow for using an empty key.

src/json.c
src/testdir/test_json.vim
src/version.c

index fd1b6ec3db826da531e9254633b96c1b0fd75c97..e5e85eb6dbb8126cf893a43019337a4e2711b584 100644 (file)
@@ -863,7 +863,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
                    && cur_item != NULL)
            {
                top_item->jd_key = get_tv_string_buf_chk(cur_item, key_buf);
-               if (top_item->jd_key == NULL || *top_item->jd_key == NUL)
+               if (top_item->jd_key == NULL)
                {
                    clear_tv(cur_item);
                    EMSG(_(e_invarg));
index 661636513423b53b0b5ca5ceb5fa4259127b2415..6c3d16ce5b22b12c2ed42c7df1df8dd52f4e597d 100644 (file)
@@ -144,6 +144,11 @@ func Test_json_decode()
   call assert_equal(type(v:none), type(json_decode('')))
   call assert_equal("", json_decode('""'))
 
+  " empty key is OK
+  call assert_equal({'': 'ok'}, json_decode('{"": "ok"}'))
+  " but not twice
+  call assert_fails("call json_decode('{\"\": \"ok\", \"\": \"bad\"}')", 'E938:')
+
   call assert_equal({'n': 1}, json_decode('{"n":1,}'))
   call assert_fails("call json_decode(\"{'n':'1',}\")", 'E474:')
   call assert_fails("call json_decode(\"'n'\")", 'E474:')
index 83e3b5316072a88f27330cf7beef656bcb5c048f..dbe0dcb85133907192adce2c82f40e05b16795c9 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    309,
 /**/
     308,
 /**/