diff src/json.c @ 19102:ba9f50bfda83 v8.2.0111

patch 8.2.0111: VAR_SPECIAL is also used for booleans Commit: https://github.com/vim/vim/commit/9b4a15d5dba354d2e1e02871470bad103f34769a Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 11 16:05:23 2020 +0100 patch 8.2.0111: VAR_SPECIAL is also used for booleans Problem: VAR_SPECIAL is also used for booleans. Solution: Add VAR_BOOL for better type checking.
author Bram Moolenaar <Bram@vim.org>
date Sat, 11 Jan 2020 16:15:04 +0100
parents f41b55f9357c
children 94eda51ba9ba
line wrap: on
line diff
--- a/src/json.c
+++ b/src/json.c
@@ -193,11 +193,17 @@ json_encode_item(garray_T *gap, typval_T
 
     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, typv
 			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, typv
 			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;