mirror of
https://github.com/json-c/json-c.git
synced 2026-04-11 00:09:06 +08:00
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
#include "json_config.h"
|
#include "json_config.h"
|
||||||
|
|
||||||
#if defined(_MSC_VER) && _MSC_VER < 1700
|
#if defined(_MSC_VER) && _MSC_VER =< 1700
|
||||||
|
|
||||||
/* Anything less than Visual Studio C++ 10 is missing stdint.h and inttypes.h */
|
/* Anything less than Visual Studio C++ 10 is missing stdint.h and inttypes.h */
|
||||||
typedef __int32 int32_t;
|
typedef __int32 int32_t;
|
||||||
|
|||||||
@@ -37,6 +37,13 @@
|
|||||||
char* strndup(const char* str, size_t n);
|
char* strndup(const char* str, size_t n);
|
||||||
#endif /* !HAVE_STRNDUP */
|
#endif /* !HAVE_STRNDUP */
|
||||||
|
|
||||||
|
#if !defined(HAVE_SNPRINTF) && defined(_MSC_VER)
|
||||||
|
/* MSC has the version as _snprintf */
|
||||||
|
# define snprintf _snprintf
|
||||||
|
#elif !defined(HAVE_SNPRINTF)
|
||||||
|
# error You do not have snprintf on your system.
|
||||||
|
#endif /* HAVE_SNPRINTF */
|
||||||
|
|
||||||
// Don't define this. It's not thread-safe.
|
// Don't define this. It's not thread-safe.
|
||||||
/* #define REFCOUNT_DEBUG 1 */
|
/* #define REFCOUNT_DEBUG 1 */
|
||||||
|
|
||||||
|
|||||||
@@ -159,14 +159,15 @@ int json_parse_double(const char *buf, double *retval)
|
|||||||
static void sscanf_is_broken_test()
|
static void sscanf_is_broken_test()
|
||||||
{
|
{
|
||||||
int64_t num64;
|
int64_t num64;
|
||||||
|
int ret_errno, is_int64_min, ret_errno2, is_int64_max;
|
||||||
|
|
||||||
(void)sscanf(" -01234567890123456789012345", "%" SCNd64, &num64);
|
(void)sscanf(" -01234567890123456789012345", "%" SCNd64, &num64);
|
||||||
int ret_errno = errno;
|
ret_errno = errno;
|
||||||
int is_int64_min = (num64 == INT64_MIN);
|
is_int64_min = (num64 == INT64_MIN);
|
||||||
|
|
||||||
(void)sscanf(" 01234567890123456789012345", "%" SCNd64, &num64);
|
(void)sscanf(" 01234567890123456789012345", "%" SCNd64, &num64);
|
||||||
int ret_errno2 = errno;
|
ret_errno2 = errno;
|
||||||
int is_int64_max = (num64 == INT64_MAX);
|
is_int64_max = (num64 == INT64_MAX);
|
||||||
|
|
||||||
if (ret_errno != ERANGE || !is_int64_min ||
|
if (ret_errno != ERANGE || !is_int64_min ||
|
||||||
ret_errno2 != ERANGE || !is_int64_max)
|
ret_errno2 != ERANGE || !is_int64_max)
|
||||||
|
|||||||
Reference in New Issue
Block a user