From 7974657c5699416b1195f77f9571d9f46bf608b8 Mon Sep 17 00:00:00 2001 From: "Shane F. Carr" Date: Wed, 30 Jul 2025 17:40:56 -0700 Subject: [PATCH] Fix code and update tests --- json_tokener.c | 4 ++-- tests/test_parse.expected | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/json_tokener.c b/json_tokener.c index a6bcbbb..8412eae 100644 --- a/json_tokener.c +++ b/json_tokener.c @@ -145,8 +145,8 @@ enum json_tokener_error json_tokener_get_error(struct json_tokener *tok) } /* Stuff for decoding unicode sequences */ -#define IS_HIGH_SURROGATE(uc) (((uc)&0xFC00) == 0xD800) -#define IS_LOW_SURROGATE(uc) (((uc)&0xFC00) == 0xDC00) +#define IS_HIGH_SURROGATE(uc) (((uc)&0xFFFFFC00) == 0xD800) +#define IS_LOW_SURROGATE(uc) (((uc)&0xFFFFFC00) == 0xDC00) #define DECODE_SURROGATE_PAIR(hi, lo) ((((hi)&0x3FF) << 10) + ((lo)&0x3FF) + 0x10000) static unsigned char utf8_replacement_char[3] = {0xEF, 0xBF, 0xBD}; diff --git a/tests/test_parse.expected b/tests/test_parse.expected index 6f7b8aa..8d3961f 100644 --- a/tests/test_parse.expected +++ b/tests/test_parse.expected @@ -14,7 +14,7 @@ new_obj.to_string("\ud840")="�" new_obj.to_string("\udd27")="�" new_obj.to_string([9,'\uDAD)=null new_obj.to_string("[9,'\uDAD")=null -new_obj.to_string("\uD836\uDE87")="�" +new_obj.to_string("\uD836\uDE87")="𝪇" new_obj.to_string(null)=null new_obj.to_string(NaN)=NaN new_obj.to_string(-NaN)=null @@ -142,7 +142,7 @@ json_tokener_parse_ex(tok, { "foo , 6) ... OK: got correct error: continu json_tokener_parse_ex(tok, : "bar"} , 8) ... OK: got correct error: unexpected character json_tokener_parse_ex(tok, "\uD836 , 7) ... OK: got correct error: continue json_tokener_parse_ex(tok, \uDE87 , 6) ... OK: got correct error: continue -json_tokener_parse_ex(tok, " , 1) ... OK: got object of type [string]: "�" +json_tokener_parse_ex(tok, " , 1) ... OK: got object of type [string]: "𝪇" json_tokener_parse_ex(tok, { "foo , 6) ... OK: got correct error: continue json_tokener_parse_ex(tok, ": {"bar , 8) ... OK: got correct error: continue json_tokener_parse_ex(tok, ":13}}XXXX , 10) ... OK: got object of type [object]: { "foo": { "bar": 13 } } -- 2.47.2