diff --git a/libcxx/src/random_shuffle.cpp b/libcxx/src/random_shuffle.cpp --- a/libcxx/src/random_shuffle.cpp +++ b/libcxx/src/random_shuffle.cpp @@ -25,9 +25,10 @@ __rs_default::__rs_default() { #ifndef _LIBCPP_HAS_NO_THREADS + if (__libcpp_are_threads_enabled()) __libcpp_mutex_lock(&__rs_mut); #endif - __c_ = 1; + __c_ = 1; } __rs_default::__rs_default(const __rs_default&) @@ -38,10 +39,10 @@ __rs_default::~__rs_default() { #ifndef _LIBCPP_HAS_NO_THREADS - if (--__c_ == 0) - __libcpp_mutex_unlock(&__rs_mut); + if (--__c_ == 0 && __libcpp_are_threads_enabled()) + __libcpp_mutex_unlock(&__rs_mut); #else - --__c_; + --__c_; #endif }