diff --git a/cJSON.c b/cJSON.c index 28a50ba..2ba22fd 100644 --- a/cJSON.c +++ b/cJSON.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "cJSON.h" #if defined(WINDOWS) || defined(__WIN32__) || defined(WIN32) || defined(_WIN32) @@ -112,7 +113,7 @@ static char *print_number(cJSON *item) { char *str; double d=item->valuedouble; - if (fabs(((double)item->valueint)-d)<=DBL_EPSILON) + if (fabs(((double)item->valueint)-d)<=DBL_EPSILON && d<=INT_MAX && d>=INT_MIN) { str=(char*)cJSON_malloc(21); // 2^64+1 can be represented in 21 chars. sprintf(str,"%d",item->valueint);