Merge pull request #372 from jlguardi/json-c-0.12

Json-c 0.12: Fixed Infinity bug
This commit is contained in:
Eric Haszlakiewicz
2017-11-26 23:26:37 -05:00
committed by GitHub
5 changed files with 16 additions and 15 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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
==================================