comparison 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
comparison
equal deleted inserted replaced
19101:7c682fab000b 19102:ba9f50bfda83
191 dict_T *d; 191 dict_T *d;
192 int i; 192 int i;
193 193
194 switch (val->v_type) 194 switch (val->v_type)
195 { 195 {
196 case VAR_BOOL:
197 switch (val->vval.v_number)
198 {
199 case VVAL_FALSE: ga_concat(gap, (char_u *)"false"); break;
200 case VVAL_TRUE: ga_concat(gap, (char_u *)"true"); break;
201 }
202 break;
203
196 case VAR_SPECIAL: 204 case VAR_SPECIAL:
197 switch (val->vval.v_number) 205 switch (val->vval.v_number)
198 { 206 {
199 case VVAL_FALSE: ga_concat(gap, (char_u *)"false"); break;
200 case VVAL_TRUE: ga_concat(gap, (char_u *)"true"); break;
201 case VVAL_NONE: if ((options & JSON_JS) != 0 207 case VVAL_NONE: if ((options & JSON_JS) != 0
202 && (options & JSON_NO_NONE) == 0) 208 && (options & JSON_NO_NONE) == 0)
203 // empty item 209 // empty item
204 break; 210 break;
205 // FALLTHROUGH 211 // FALLTHROUGH
816 if (STRNICMP((char *)p, "false", 5) == 0) 822 if (STRNICMP((char *)p, "false", 5) == 0)
817 { 823 {
818 reader->js_used += 5; 824 reader->js_used += 5;
819 if (cur_item != NULL) 825 if (cur_item != NULL)
820 { 826 {
821 cur_item->v_type = VAR_SPECIAL; 827 cur_item->v_type = VAR_BOOL;
822 cur_item->vval.v_number = VVAL_FALSE; 828 cur_item->vval.v_number = VVAL_FALSE;
823 } 829 }
824 retval = OK; 830 retval = OK;
825 break; 831 break;
826 } 832 }
827 if (STRNICMP((char *)p, "true", 4) == 0) 833 if (STRNICMP((char *)p, "true", 4) == 0)
828 { 834 {
829 reader->js_used += 4; 835 reader->js_used += 4;
830 if (cur_item != NULL) 836 if (cur_item != NULL)
831 { 837 {
832 cur_item->v_type = VAR_SPECIAL; 838 cur_item->v_type = VAR_BOOL;
833 cur_item->vval.v_number = VVAL_TRUE; 839 cur_item->vval.v_number = VVAL_TRUE;
834 } 840 }
835 retval = OK; 841 retval = OK;
836 break; 842 break;
837 } 843 }