Skip to content

Commit 2f433b5

Browse files
committed
Fix issue where JSON.stringify({ something: bool }) would output 'something' as a bool too
1 parent 05c89c9 commit 2f433b5

File tree

3 files changed

+4
-3
lines changed

3 files changed

+4
-3
lines changed

ChangeLog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
JSON.stringify now checks for potential stack overflow when stringifying (fix #1940)
1414
Check for Stack overflow when Garbage Collecting giant linked list (fix #1765)
1515
Added String.padStart/padEnd
16+
Fix issue where JSON.stringify({ something: bool }) would output 'something' as a bool too
1617

1718
2v07 : Graphics.asImage() now contains buffer when bpp != 8 (fix #1863)
1819
nRF52 SDK15: Fix NRF.setScan/findDevices/etc

src/jsvar.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ bool jsvIsName(const JsVar *v) { return v && (v->flags&JSV_VARTYPEMASK)>=_JSV_NA
9999
bool jsvIsBasicName(const JsVar *v) { return v && (v->flags&JSV_VARTYPEMASK)>=JSV_NAME_STRING_0 && (v->flags&JSV_VARTYPEMASK)<=JSV_NAME_STRING_MAX; } ///< Simple NAME that links to a variable via firstChild
100100
/// Names with values have firstChild set to a value - AND NOT A REFERENCE
101101
bool jsvIsNameWithValue(const JsVar *v) { return v && (v->flags&JSV_VARTYPEMASK)>=_JSV_NAME_WITH_VALUE_START && (v->flags&JSV_VARTYPEMASK)<=_JSV_NAME_WITH_VALUE_END; }
102-
bool jsvIsNameInt(const JsVar *v) { return v && ((v->flags&JSV_VARTYPEMASK)==JSV_NAME_INT_INT || ((v->flags&JSV_VARTYPEMASK)>=JSV_NAME_STRING_INT_0 && (v->flags&JSV_VARTYPEMASK)<=JSV_NAME_STRING_INT_MAX)); }
102+
bool jsvIsNameInt(const JsVar *v) { return v && ((v->flags&JSV_VARTYPEMASK)==JSV_NAME_INT_INT || ((v->flags&JSV_VARTYPEMASK)>=JSV_NAME_STRING_INT_0 && (v->flags&JSV_VARTYPEMASK)<=JSV_NAME_STRING_INT_MAX)); } ///< Is this a NAME pointing to an Integer value
103103
bool jsvIsNameIntInt(const JsVar *v) { return v && (v->flags&JSV_VARTYPEMASK)==JSV_NAME_INT_INT; }
104104
bool jsvIsNameIntBool(const JsVar *v) { return v && (v->flags&JSV_VARTYPEMASK)==JSV_NAME_INT_BOOL; }
105105
/// What happens when we access a variable that doesn't exist. We get a NAME where the next + previous siblings point to the object that may one day contain them
@@ -1232,7 +1232,7 @@ const char *jsvGetConstString(const JsVar *v) {
12321232
return "undefined";
12331233
} else if (jsvIsNull(v)) {
12341234
return "null";
1235-
} else if (jsvIsBoolean(v)) {
1235+
} else if (jsvIsBoolean(v) && !jsvIsNameIntBool(v)) {
12361236
return jsvGetBool(v) ? "true" : "false";
12371237
}
12381238
return 0;

src/jsvar.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ extern bool jsvIsName(const JsVar *v); ///< NAMEs are what's used to name a vari
429429
bool jsvIsBasicName(const JsVar *v); ///< Simple NAME that links to a variable via firstChild
430430
/// Names with values have firstChild set to a value - AND NOT A REFERENCE
431431
extern bool jsvIsNameWithValue(const JsVar *v);
432-
extern bool jsvIsNameInt(const JsVar *v);
432+
extern bool jsvIsNameInt(const JsVar *v); ///< Is this a NAME pointing to an Integer value
433433
extern bool jsvIsNameIntInt(const JsVar *v);
434434
extern bool jsvIsNameIntBool(const JsVar *v);
435435
/// What happens when we access a variable that doesn't exist. We get a NAME where the next + previous siblings point to the object that may one day contain them

0 commit comments

Comments
 (0)