From 48ba6b8c0639e8b9fc1b81ce3e7b8c62191fb639 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 4 Jun 2013 20:17:12 +0200 Subject: [PATCH 1/3] fixe int32_t definition for VC11 int32_t is nowhere in msvc, so the version check could be even removed --- json_inttypes.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json_inttypes.h b/json_inttypes.h index 2f84ade..bfe1060 100644 --- a/json_inttypes.h +++ b/json_inttypes.h @@ -4,7 +4,7 @@ #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 */ typedef __int32 int32_t; From ed819fb9268535589c2302277f4d80afa6d38d79 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 4 Jun 2013 20:18:05 +0200 Subject: [PATCH 2/3] snprintf definition is needed here, too --- json_object.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/json_object.c b/json_object.c index f2b5ce0..facb824 100644 --- a/json_object.c +++ b/json_object.c @@ -37,6 +37,13 @@ char* strndup(const char* str, size_t n); #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. /* #define REFCOUNT_DEBUG 1 */ From 990fa8e3ee84195c35c3c68d9f8a1435ddf97d59 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 4 Jun 2013 20:18:28 +0200 Subject: [PATCH 3/3] Fix C89 compat needed by MSVC --- json_util.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/json_util.c b/json_util.c index 111fa01..d62d54e 100644 --- a/json_util.c +++ b/json_util.c @@ -159,14 +159,15 @@ int json_parse_double(const char *buf, double *retval) static void sscanf_is_broken_test() { int64_t num64; + int ret_errno, is_int64_min, ret_errno2, is_int64_max; (void)sscanf(" -01234567890123456789012345", "%" SCNd64, &num64); - int ret_errno = errno; - int is_int64_min = (num64 == INT64_MIN); + ret_errno = errno; + is_int64_min = (num64 == INT64_MIN); (void)sscanf(" 01234567890123456789012345", "%" SCNd64, &num64); - int ret_errno2 = errno; - int is_int64_max = (num64 == INT64_MAX); + ret_errno2 = errno; + is_int64_max = (num64 == INT64_MAX); if (ret_errno != ERANGE || !is_int64_min || ret_errno2 != ERANGE || !is_int64_max)