closes https://github.com/json-c/json-c/issues/278tags/json-c-0.13-20171207
| @@ -693,6 +693,7 @@ static int json_object_double_to_json_string_format(struct json_object* jso, | |||||
| { | { | ||||
| char buf[128], *p, *q; | char buf[128], *p, *q; | ||||
| int size; | int size; | ||||
| double dummy; /* needed for modf() */ | |||||
| /* Although JSON RFC does not support | /* Although JSON RFC does not support | ||||
| NaN or Infinity as numeric values | NaN or Infinity as numeric values | ||||
| ECMA 262 section 9.8.1 defines | ECMA 262 section 9.8.1 defines | ||||
| @@ -706,7 +707,9 @@ static int json_object_double_to_json_string_format(struct json_object* jso, | |||||
| size = snprintf(buf, sizeof(buf), "-Infinity"); | size = snprintf(buf, sizeof(buf), "-Infinity"); | ||||
| else | else | ||||
| size = snprintf(buf, sizeof(buf), | size = snprintf(buf, sizeof(buf), | ||||
| format ? format : "%.17g", jso->o.c_double); | |||||
| format ? format : | |||||
| (modf(jso->o.c_double, &dummy) == 0) ? "%.17g.0" : "%.17g", | |||||
| jso->o.c_double); | |||||
| p = strchr(buf, ','); | p = strchr(buf, ','); | ||||
| if (p) { | if (p) { | ||||
| @@ -31,8 +31,8 @@ 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 ] } | ||||
| new_obj.to_string()={ "abc": "blue\nred\ngreen" } | new_obj.to_string()={ "abc": "blue\nred\ngreen" } | ||||
| new_obj.to_string()=[ 0 ] | |||||
| new_obj.to_string()=[ 0 ] | |||||
| new_obj.to_string()=[ 0.0 ] | |||||
| new_obj.to_string()=[ 0.0 ] | |||||
| new_obj.to_string()=null | new_obj.to_string()=null | ||||
| new_obj.to_string()=[ 9223372036854775807 ] | new_obj.to_string()=[ 9223372036854775807 ] | ||||
| ================================== | ================================== | ||||