diff --git a/json_tokener.c b/json_tokener.c index 7ff53a1dc2..0d38fc1d29 100644 --- a/json_tokener.c +++ b/json_tokener.c @@ -337,6 +337,7 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok, state = json_tokener_state_number; printbuf_reset(tok->pb); tok->is_double = 0; + tok->st_pos = 0; goto redo_char; default: tok->err = json_tokener_error_parse_unexpected; diff --git a/tests/testReplaceExisting.c b/tests/testReplaceExisting.c index 6db7b98eca..79f37c521b 100644 --- a/tests/testReplaceExisting.c +++ b/tests/testReplaceExisting.c @@ -24,7 +24,7 @@ int main(int argc, char **argv) int orig_count = 0; json_object_object_foreach(my_object, key0, val0) { - printf("Key at index %d is [%s]", orig_count, key0); + printf("Key at index %d is [%s] %d", orig_count, key0, (val0 == NULL)); if (strcmp(key0, "deleteme") == 0) { json_object_object_del(my_object, key0); @@ -41,7 +41,7 @@ int main(int argc, char **argv) orig_count = 0; json_object_object_foreach(my_object, key, val) { - printf("Key at index %d is [%s]\n", orig_count, key); + printf("Key at index %d is [%s] %d\n", orig_count, key, (val == NULL)); orig_count++; if (strcmp(key, "foo2") != 0) continue; @@ -56,7 +56,7 @@ int main(int argc, char **argv) int retval = 0; json_object_object_foreach(my_object, key2, val2) { - printf("Key at index %d is [%s]\n", new_count, key2); + printf("Key at index %d is [%s] %d\n", new_count, key2, (val2 == NULL)); new_count++; if (strcmp(key2, "foo2") != 0) continue; diff --git a/tests/testReplaceExisting.expected b/tests/testReplaceExisting.expected index b1d4461b04..57ef190f49 100644 --- a/tests/testReplaceExisting.expected +++ b/tests/testReplaceExisting.expected @@ -1,15 +1,15 @@ ==== delete-in-loop test starting ==== -Key at index 0 is [foo1] (kept) -Key at index 1 is [foo2] (kept) -Key at index 2 is [deleteme] (deleted) -Key at index 3 is [foo3] (kept) +Key at index 0 is [foo1] 0 (kept) +Key at index 1 is [foo2] 0 (kept) +Key at index 2 is [deleteme] 0 (deleted) +Key at index 3 is [foo3] 0 (kept) ==== replace-value first loop starting ==== -Key at index 0 is [foo1] -Key at index 1 is [foo2] +Key at index 0 is [foo1] 0 +Key at index 1 is [foo2] 0 replacing value for key [foo2] -Key at index 2 is [foo3] +Key at index 2 is [foo3] 0 ==== second loop starting ==== -Key at index 0 is [foo1] -Key at index 1 is [foo2] +Key at index 0 is [foo1] 0 +Key at index 1 is [foo2] 0 pointer for key [foo2] does match -Key at index 2 is [foo3] +Key at index 2 is [foo3] 0 diff --git a/tests/test_parse.c b/tests/test_parse.c index 8808d0fa61..f6b5c03e87 100644 --- a/tests/test_parse.c +++ b/tests/test_parse.c @@ -131,7 +131,7 @@ static void test_basic_parse() printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj)); json_object_put(new_obj); - new_obj = json_tokener_parse("{ \"abc\": 12, \"foo\": \"bar\", \"bool0\": false, \"bool1\": true, \"arr\": [ 1, 2, 3, null, 5 ] }"); + new_obj = json_tokener_parse("{ \"abc\": 12, \"foo\": \"bar\", \"bool0\": false, \"bool1\": true, \"arr\": [ 1, 2, 3, null, 5 ], \"inf\": Infinity, \"-inf\": -Infinity, \"nan\": NaN, \"def\" : -0.22, \"hij\": 0.31 }"); printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj)); json_object_put(new_obj); } diff --git a/tests/test_parse.expected b/tests/test_parse.expected index d49cbbb18e..b8badda5da 100644 --- a/tests/test_parse.expected +++ b/tests/test_parse.expected @@ -24,7 +24,7 @@ new_obj.to_string()={ } new_obj.to_string()={ "foo": "bar" } new_obj.to_string()={ "foo": "bar", "baz": null, "bool0": true } new_obj.to_string()={ "foo": [ null, "foo" ] } -new_obj.to_string()={ "abc": 12, "foo": "bar", "bool0": false, "bool1": true, "arr": [ 1, 2, 3, null, 5 ] } +new_obj.to_string()={ "abc": 12, "foo": "bar", "bool0": false, "bool1": true, "arr": [ 1, 2, 3, null, 5 ], "inf": Infinity, "-inf": -Infinity, "nan": NaN, "def": -0.22, "hij": 0.31 } ================================== json_tokener_parse_versbose() OK ==================================