Merge branch 'feature/check_data_bits_overflow' into 'master'

cjson: check if 32-bit type data is overflow

See merge request sdk/ESP8266_RTOS_SDK!945
This commit is contained in:
Dong Heng
2019-05-31 10:01:59 +08:00

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) {