feat(cjson): Check if 32-bit type data is overflow

This commit is contained in:
dongheng
2019-05-20 10:39:17 +08:00
parent 1a86bb75f6
commit 7affcfc02d

View File

@ -60,6 +60,10 @@
#define CJSON_SPRINTF_FLOAT 0
#endif
#if !CJSON_SPRINTF_FLOAT
#include <assert.h>
#endif
#include "cJSON.h"
/* define our own boolean type */
@ -510,8 +514,14 @@ static cJSON_bool print_number(const cJSON * const item, printbuffer * const out
length = sprintf((char*)number_buffer, "%1.17g", d);
}
#else
long long d64 = (long long)d;
long d32 = (long)d;
/**
* Check if 32-bit type data is overflow.
*/
assert(d32 == d64 && "Library newlib of nano mode does not support double or long-long format, please enable newlib normal mode.");
length = sprintf((char*)number_buffer, "%ld", d32);
if ((double)d32 != d) {