Merge pull request #88 from weltling/master

Several MSVC fixes
This commit is contained in:
Eric Haszlakiewicz
2013-06-18 21:16:04 -07:00
3 changed files with 13 additions and 5 deletions

View File

@@ -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;

View File

@@ -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 */

View File

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