print_number: Remove unnecessary integer handling

This commit is contained in:
Max Bruckner
2017-03-01 13:26:52 +01:00
parent 1ea72f8260
commit dd4cb5400f

17
cJSON.c
View File

@@ -368,21 +368,6 @@ static unsigned char *print_number(const cJSON * const item, printbuffer * const
return NULL; return NULL;
} }
/* value is an int */
if ((fabs(((double)item->valueint) - d) <= DBL_EPSILON) && (d <= INT_MAX) && (d >= INT_MIN))
{
trim_zeroes = false; /* don't remove zeroes for integers */
/* 2^64+1 can be represented in 21 chars. */
output_pointer = ensure(output_buffer, 21, hooks);
if (output_pointer != NULL)
{
length = sprintf((char*)output_pointer, "%d", item->valueint);
}
}
/* value is a floating point number */
else
{
/* This is a nice tradeoff. */ /* This is a nice tradeoff. */
output_pointer = ensure(output_buffer, 64, hooks); output_pointer = ensure(output_buffer, 64, hooks);
if (output_pointer != NULL) if (output_pointer != NULL)
@@ -394,6 +379,7 @@ static unsigned char *print_number(const cJSON * const item, printbuffer * const
} }
else if ((fabs(floor(d) - d) <= DBL_EPSILON) && (fabs(d) < 1.0e60)) else if ((fabs(floor(d) - d) <= DBL_EPSILON) && (fabs(d) < 1.0e60))
{ {
/* integer */
length = sprintf((char*)output_pointer, "%.0f", d); length = sprintf((char*)output_pointer, "%.0f", d);
trim_zeroes = false; /* don't remove zeroes for "big integers" */ trim_zeroes = false; /* don't remove zeroes for "big integers" */
} }
@@ -407,7 +393,6 @@ static unsigned char *print_number(const cJSON * const item, printbuffer * const
length = sprintf((char*)output_pointer, "%f", d); length = sprintf((char*)output_pointer, "%f", d);
} }
} }
}
/* sprintf failed */ /* sprintf failed */
if (length < 0) if (length < 0)