mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-05-20 00:27:19 +08:00
feat(cjson): Check if 32-bit type data is overflow
This commit is contained in:
@ -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) {
|
||||
|
Reference in New Issue
Block a user