diff --git a/src/pthread/once.cpp b/src/pthread/once.cpp index 2cfe7cd1..f61d74c8 100644 --- a/src/pthread/once.cpp +++ b/src/pthread/once.cpp @@ -15,7 +15,9 @@ #include #include #include - +#if defined BOOST_THREAD_PATCH +#include // memcmp. +#endif namespace boost { namespace thread_detail diff --git a/src/pthread/thread.cpp b/src/pthread/thread.cpp index 730a43a6..aa29615d 100644 --- a/src/pthread/thread.cpp +++ b/src/pthread/thread.cpp @@ -126,7 +126,8 @@ namespace boost } ~delete_current_thread_tls_key_on_dlclose_t() { - if (current_thread_tls_init_flag.epoch!=BOOST_ONCE_INITIAL_FLAG_VALUE) + const boost::once_flag uninitialized = BOOST_ONCE_INIT; + if (memcmp(¤t_thread_tls_init_flag, &uninitialized, sizeof(boost::once_flag))) { pthread_key_delete(current_thread_tls_key); }