diff src/c/openssl.c @ 2174:ce312cad5ecd

Use correct OpenSSL thread safety macros on OS X (closes #209) Create an Autoconf test to determine if pthread_t is a pointer or scalar type, and use the appropriate CRYPTO_THREADID_set macro based on the result.
author Benjamin Barenblat <bbaren at mit.edu>
date Sun, 20 Sep 2015 17:46:07 -0400
parents 8a01e8f21de9
children dfadb5effdc0
line wrap: on
line diff
--- a/src/c/openssl.c	Thu Aug 27 16:28:45 2015 -0400
+++ b/src/c/openssl.c	Sun Sep 20 17:46:07 2015 -0400
@@ -34,9 +34,15 @@
 }
 
 // OpenSSL callbacks
+#ifdef PTHREAD_T_IS_POINTER
+# define CRYPTO_THREADID_SET CRYPTO_THREADID_set_pointer
+#else
+# define CRYPTO_THREADID_SET CRYPTO_THREADID_set_numeric
+#endif
 static void thread_id(CRYPTO_THREADID *const result) {
-  CRYPTO_THREADID_set_numeric(result, pthread_self());
+  CRYPTO_THREADID_SET(result, pthread_self());
 }
+#undef CRYPTO_THREADID_SET
 static void lock_or_unlock(const int mode, const int type, const char *file,
                            const int line) {
   pthread_mutex_t *const lock = &openssl_locks[type];