summaryrefslogtreecommitdiffstats
path: root/src/json.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-01-11 16:05:23 +0100
committerBram Moolenaar <Bram@vim.org>2020-01-11 16:05:23 +0100
commit9b4a15d5dba354d2e1e02871470bad103f34769a (patch)
treee5e49ad3182e07e641cdea0e04c4a8078186c58c /src/json.c
parente05a89ac6399a8c7d164c99fdab6841d999a9128 (diff)
patch 8.2.0111: VAR_SPECIAL is also used for booleansv8.2.0111
Problem: VAR_SPECIAL is also used for booleans. Solution: Add VAR_BOOL for better type checking.
Diffstat (limited to 'src/json.c')
-rw-r--r--src/json.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/json.c b/src/json.c
index eedb6062af..64ef93fabb 100644
--- a/src/json.c
+++ b/src/json.c
@@ -193,11 +193,17 @@ json_encode_item(garray_T *gap, typval_T *val, int copyID, int options)
switch (val->v_type)
{
- case VAR_SPECIAL:
+ case VAR_BOOL:
switch (val->vval.v_number)
{
case VVAL_FALSE: ga_concat(gap, (char_u *)"false"); break;
case VVAL_TRUE: ga_concat(gap, (char_u *)"true"); break;
+ }
+ break;
+
+ case VAR_SPECIAL:
+ switch (val->vval.v_number)
+ {
case VVAL_NONE: if ((options & JSON_JS) != 0
&& (options & JSON_NO_NONE) == 0)
// empty item
@@ -818,7 +824,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
reader->js_used += 5;
if (cur_item != NULL)
{
- cur_item->v_type = VAR_SPECIAL;
+ cur_item->v_type = VAR_BOOL;
cur_item->vval.v_number = VVAL_FALSE;
}
retval = OK;
@@ -829,7 +835,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
reader->js_used += 4;
if (cur_item != NULL)
{
- cur_item->v_type = VAR_SPECIAL;
+ cur_item->v_type = VAR_BOOL;
cur_item->vval.v_number = VVAL_TRUE;
}
retval = OK;