Mercurial > vim
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 } |