summaryrefslogtreecommitdiff
path: root/linkhash.c
diff options
context:
space:
mode:
authorPablo Sanabria <pablo.s.q1.4.1991@gmail.com>2017-03-25 19:18:29 -0300
committerPablo Sanabria <pablo.s.q1.4.1991@gmail.com>2017-03-26 23:14:37 -0300
commitd3f813a14e603dc53d1fac050ec07eda870fe081 (patch)
tree1e893373bb5350435cd8908ff560c85ac0c591f9 /linkhash.c
parent2cda677d06c43b9405e42cc6cc96589941b1e210 (diff)
downloadjson-c-d3f813a14e603dc53d1fac050ec07eda870fe081.tar.gz
Fixed linkhash.c for MinGW
Added #ifdef conditions for MinGW because this compiler doesn't define gcc atomic builtins, so __sync_val_compare_and_swap was not found neither any of any __GCC_HAVE_SYNC_COMPARE_AND_SWAP_* definition
Diffstat (limited to 'linkhash.c')
-rw-r--r--linkhash.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/linkhash.c b/linkhash.c
index fd52fe3..830caa8 100644
--- a/linkhash.c
+++ b/linkhash.c
@@ -23,7 +23,7 @@
# include <endian.h> /* attempt to define endianness */
#endif
-#ifdef _MSC_VER
+#if defined(_MSC_VER) || defined(__MINGW32__)
# define WIN32_LEAN_AND_MEAN
# include <windows.h> /* Get InterlockedCompareExchange */
#endif
@@ -452,7 +452,7 @@ static unsigned long lh_perllike_str_hash(const void *k)
static unsigned long lh_char_hash(const void *k)
{
-#if defined _MSC_VER
+#if defined _MSC_VER || defined __MINGW32__
#define RANDOM_SEED_TYPE LONG
#else
#define RANDOM_SEED_TYPE int
@@ -474,7 +474,7 @@ static unsigned long lh_char_hash(const void *k)
#endif
#if defined USE_SYNC_COMPARE_AND_SWAP
(void)__sync_val_compare_and_swap(&random_seed, -1, seed);
-#elif defined _MSC_VER
+#elif defined _MSC_VER || defined __MINGW32__
InterlockedCompareExchange(&random_seed, seed, -1);
#else
#warning "racy random seed initializtion if used by multiple threads"