Compare commits

...

2 Commits

Author SHA1 Message Date
Max Bruckner
e3d5798896 Release version 1.4.1 2017-03-15 20:11:19 +01:00
Max Bruckner
cf1842dc6f fix: print_number didn't abort when out of memory 2017-03-15 00:09:45 +01:00
4 changed files with 27 additions and 25 deletions

View File

@@ -9,7 +9,7 @@ project(cJSON C)
set(PROJECT_VERSION_MAJOR 1) set(PROJECT_VERSION_MAJOR 1)
set(PROJECT_VERSION_MINOR 4) set(PROJECT_VERSION_MINOR 4)
set(PROJECT_VERSION_PATCH 0) set(PROJECT_VERSION_PATCH 1)
set(CJSON_VERSION_SO 1) set(CJSON_VERSION_SO 1)
set(CJSON_UTILS_VERSION_SO 1) set(CJSON_UTILS_VERSION_SO 1)
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")

View File

@@ -10,7 +10,7 @@ UTILS_TEST_SRC = cJSON.c cJSON_Utils.c test_utils.c
LDLIBS = -lm LDLIBS = -lm
LIBVERSION = 1.4.0 LIBVERSION = 1.4.1
CJSON_SOVERSION = 1 CJSON_SOVERSION = 1
UTILS_SOVERSION = 1 UTILS_SOVERSION = 1

46
cJSON.c
View File

@@ -47,7 +47,7 @@ CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void)
} }
/* This is a safeguard to prevent copy-pasters from using incompatible C and header files */ /* This is a safeguard to prevent copy-pasters from using incompatible C and header files */
#if (CJSON_VERSION_MAJOR != 1) || (CJSON_VERSION_MINOR != 4) || (CJSON_VERSION_PATCH != 0) #if (CJSON_VERSION_MAJOR != 1) || (CJSON_VERSION_MINOR != 4) || (CJSON_VERSION_PATCH != 1)
#error cJSON.h and cJSON.c have different versions. Make sure that both have the same. #error cJSON.h and cJSON.c have different versions. Make sure that both have the same.
#endif #endif
@@ -372,28 +372,30 @@ static cJSON_bool print_number(const cJSON * const item, printbuffer * const out
/* 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)
{ {
/* This checks for NaN and Infinity */ return false;
if ((d * 0) != 0) }
{
length = sprintf((char*)output_pointer, "null"); /* This checks for NaN and Infinity */
} if ((d * 0) != 0)
else if ((fabs(floor(d) - d) <= DBL_EPSILON) && (fabs(d) < 1.0e60)) {
{ length = sprintf((char*)output_pointer, "null");
/* integer */ }
length = sprintf((char*)output_pointer, "%.0f", d); else if ((fabs(floor(d) - d) <= DBL_EPSILON) && (fabs(d) < 1.0e60))
trim_zeroes = false; /* don't remove zeroes for "big integers" */ {
} /* integer */
else if ((fabs(d) < 1.0e-6) || (fabs(d) > 1.0e9)) length = sprintf((char*)output_pointer, "%.0f", d);
{ trim_zeroes = false; /* don't remove zeroes for "big integers" */
length = sprintf((char*)output_pointer, "%e", d); }
trim_zeroes = false; /* don't remove zeroes in engineering notation */ else if ((fabs(d) < 1.0e-6) || (fabs(d) > 1.0e9))
} {
else length = sprintf((char*)output_pointer, "%e", d);
{ trim_zeroes = false; /* don't remove zeroes in engineering notation */
length = sprintf((char*)output_pointer, "%f", d); }
} else
{
length = sprintf((char*)output_pointer, "%f", d);
} }
/* sprintf failed */ /* sprintf failed */

View File

@@ -31,7 +31,7 @@ extern "C"
/* project version */ /* project version */
#define CJSON_VERSION_MAJOR 1 #define CJSON_VERSION_MAJOR 1
#define CJSON_VERSION_MINOR 4 #define CJSON_VERSION_MINOR 4
#define CJSON_VERSION_PATCH 0 #define CJSON_VERSION_PATCH 1
#include <stddef.h> #include <stddef.h>