mirror of
https://github.com/json-c/json-c.git
synced 2026-04-04 12:59:07 +08:00
Merge pull request #372 from jlguardi/json-c-0.12
Json-c 0.12: Fixed Infinity bug
This commit is contained in:
@@ -337,6 +337,7 @@ struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
|
|||||||
state = json_tokener_state_number;
|
state = json_tokener_state_number;
|
||||||
printbuf_reset(tok->pb);
|
printbuf_reset(tok->pb);
|
||||||
tok->is_double = 0;
|
tok->is_double = 0;
|
||||||
|
tok->st_pos = 0;
|
||||||
goto redo_char;
|
goto redo_char;
|
||||||
default:
|
default:
|
||||||
tok->err = json_tokener_error_parse_unexpected;
|
tok->err = json_tokener_error_parse_unexpected;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ int main(int argc, char **argv)
|
|||||||
int orig_count = 0;
|
int orig_count = 0;
|
||||||
json_object_object_foreach(my_object, key0, val0)
|
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)
|
if (strcmp(key0, "deleteme") == 0)
|
||||||
{
|
{
|
||||||
json_object_object_del(my_object, key0);
|
json_object_object_del(my_object, key0);
|
||||||
@@ -41,7 +41,7 @@ int main(int argc, char **argv)
|
|||||||
orig_count = 0;
|
orig_count = 0;
|
||||||
json_object_object_foreach(my_object, key, val)
|
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++;
|
orig_count++;
|
||||||
if (strcmp(key, "foo2") != 0)
|
if (strcmp(key, "foo2") != 0)
|
||||||
continue;
|
continue;
|
||||||
@@ -56,7 +56,7 @@ int main(int argc, char **argv)
|
|||||||
int retval = 0;
|
int retval = 0;
|
||||||
json_object_object_foreach(my_object, key2, val2)
|
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++;
|
new_count++;
|
||||||
if (strcmp(key2, "foo2") != 0)
|
if (strcmp(key2, "foo2") != 0)
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
==== delete-in-loop test starting ====
|
==== delete-in-loop test starting ====
|
||||||
Key at index 0 is [foo1] (kept)
|
Key at index 0 is [foo1] 0 (kept)
|
||||||
Key at index 1 is [foo2] (kept)
|
Key at index 1 is [foo2] 0 (kept)
|
||||||
Key at index 2 is [deleteme] (deleted)
|
Key at index 2 is [deleteme] 0 (deleted)
|
||||||
Key at index 3 is [foo3] (kept)
|
Key at index 3 is [foo3] 0 (kept)
|
||||||
==== replace-value first loop starting ====
|
==== replace-value first loop starting ====
|
||||||
Key at index 0 is [foo1]
|
Key at index 0 is [foo1] 0
|
||||||
Key at index 1 is [foo2]
|
Key at index 1 is [foo2] 0
|
||||||
replacing value for key [foo2]
|
replacing value for key [foo2]
|
||||||
Key at index 2 is [foo3]
|
Key at index 2 is [foo3] 0
|
||||||
==== second loop starting ====
|
==== second loop starting ====
|
||||||
Key at index 0 is [foo1]
|
Key at index 0 is [foo1] 0
|
||||||
Key at index 1 is [foo2]
|
Key at index 1 is [foo2] 0
|
||||||
pointer for key [foo2] does match
|
pointer for key [foo2] does match
|
||||||
Key at index 2 is [foo3]
|
Key at index 2 is [foo3] 0
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ static void test_basic_parse()
|
|||||||
printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
|
printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
|
||||||
json_object_put(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));
|
printf("new_obj.to_string()=%s\n", json_object_to_json_string(new_obj));
|
||||||
json_object_put(new_obj);
|
json_object_put(new_obj);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ new_obj.to_string()={ }
|
|||||||
new_obj.to_string()={ "foo": "bar" }
|
new_obj.to_string()={ "foo": "bar" }
|
||||||
new_obj.to_string()={ "foo": "bar", "baz": null, "bool0": true }
|
new_obj.to_string()={ "foo": "bar", "baz": null, "bool0": true }
|
||||||
new_obj.to_string()={ "foo": [ null, "foo" ] }
|
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
|
json_tokener_parse_versbose() OK
|
||||||
==================================
|
==================================
|
||||||
|
|||||||
Reference in New Issue
Block a user