]> granicus.if.org Git - json-c/commitdiff
Fixed linkhash.c for MinGW
authorPablo Sanabria <pablo.s.q1.4.1991@gmail.com>
Sat, 25 Mar 2017 22:18:29 +0000 (19:18 -0300)
committerPablo Sanabria <pablo.s.q1.4.1991@gmail.com>
Mon, 27 Mar 2017 02:14:37 +0000 (23:14 -0300)
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

linkhash.c

index fd52fe34b2cb44e911142ca22e0fb3be65771caf..830caa83573e4c9357dae253c94147c98184396f 100644 (file)
@@ -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"