mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-05-20 08:36:41 +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
|
#define CJSON_SPRINTF_FLOAT 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !CJSON_SPRINTF_FLOAT
|
||||||
|
#include <assert.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "cJSON.h"
|
#include "cJSON.h"
|
||||||
|
|
||||||
/* define our own boolean type */
|
/* 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);
|
length = sprintf((char*)number_buffer, "%1.17g", d);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
long long d64 = (long long)d;
|
||||||
long d32 = (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);
|
length = sprintf((char*)number_buffer, "%ld", d32);
|
||||||
|
|
||||||
if ((double)d32 != d) {
|
if ((double)d32 != d) {
|
||||||
|
Reference in New Issue
Block a user