diff options
Diffstat (limited to 'json_object.c')
-rw-r--r-- | json_object.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/json_object.c b/json_object.c index d5ac465..527cd31 100644 --- a/json_object.c +++ b/json_object.c @@ -58,6 +58,8 @@ static json_object_to_json_string_fn _json_object_userdata_to_json_string; #ifndef JSON_NORETURN #if defined(_MSC_VER) #define JSON_NORETURN __declspec(noreturn) +#elif defined(__OS400__) +#define JSON_NORETURN #else /* 'cold' attribute is for optimization, telling the computer this code * path is unlikely. @@ -901,11 +903,15 @@ static int json_object_double_to_json_string_format(struct json_object *jso, str * ECMA 262 section 9.8.1 defines * how to handle these cases as strings */ +#ifdef HAVE_DECL_ISNAN if (isnan(jso->o.c_double)) { size = snprintf(buf, sizeof(buf), "NaN"); } - else if (isinf(jso->o.c_double)) + else +#endif +#ifdef HAVE_DECL_ISINF + if (isinf(jso->o.c_double)) { if (jso->o.c_double > 0) size = snprintf(buf, sizeof(buf), "Infinity"); @@ -913,6 +919,7 @@ static int json_object_double_to_json_string_format(struct json_object *jso, str size = snprintf(buf, sizeof(buf), "-Infinity"); } else +#endif { const char *std_format = "%.17g"; int format_drops_decimals = 0; |