Fix OS availability check of pthread_threadid_np for iOS (#2897)

This commit is contained in:
Peter Nemeth 2023-10-11 09:34:42 +02:00 committed by gabime
parent 82a672a4d3
commit 959244b3cd

View File

@ -330,15 +330,21 @@ size_t _thread_id() noexcept {
return static_cast<size_t>(::thr_self()); return static_cast<size_t>(::thr_self());
#elif __APPLE__ #elif __APPLE__
uint64_t tid; uint64_t tid;
// There is no pthread_threadid_np prior to 10.6, and it is not supported on any PPC, // There is no pthread_threadid_np prior to Mac OS X 10.6, and it is not supported on any PPC,
// including 10.6.8 Rosetta. __POWERPC__ is Apple-specific define encompassing ppc and ppc64. // including 10.6.8 Rosetta. __POWERPC__ is Apple-specific define encompassing ppc and ppc64.
#if (MAC_OS_X_VERSION_MAX_ALLOWED < 1060) || defined(__POWERPC__) #ifdef MAC_OS_X_VERSION_MAX_ALLOWED
tid = pthread_mach_thread_np(pthread_self()); {
#elif MAC_OS_X_VERSION_MIN_REQUIRED < 1060 #if (MAC_OS_X_VERSION_MAX_ALLOWED < 1060) || defined(__POWERPC__)
if (&pthread_threadid_np) {
pthread_threadid_np(nullptr, &tid);
} else {
tid = pthread_mach_thread_np(pthread_self()); tid = pthread_mach_thread_np(pthread_self());
#elif MAC_OS_X_VERSION_MIN_REQUIRED < 1060
if (&pthread_threadid_np) {
pthread_threadid_np(nullptr, &tid);
} else {
tid = pthread_mach_thread_np(pthread_self());
}
#else
pthread_threadid_np(nullptr, &tid);
#endif
} }
#else #else
pthread_threadid_np(nullptr, &tid); pthread_threadid_np(nullptr, &tid);