From 65796a11c69dd4d408a3b4cf325674bff6825617 Mon Sep 17 00:00:00 2001 From: Dan Appel Date: Tue, 3 Jan 2023 14:57:40 -0800 Subject: [PATCH] Add precondition guards to pthread_mutex calls While in the current configuration lock/unlock shouldn't ever fail, it seems polite to guard against basic misuse in debug builds. --- Sources/AsyncAlgorithms/Locking.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Sources/AsyncAlgorithms/Locking.swift b/Sources/AsyncAlgorithms/Locking.swift index 74396080..b23ba30f 100644 --- a/Sources/AsyncAlgorithms/Locking.swift +++ b/Sources/AsyncAlgorithms/Locking.swift @@ -37,7 +37,7 @@ internal struct Lock { #if canImport(Darwin) platformLock.initialize(to: os_unfair_lock()) #elseif canImport(Glibc) - pthread_mutex_init(platformLock, nil) + precondition(pthread_mutex_init(platformLock, nil) == 0, "pthread_mutex_init failed") #elseif canImport(WinSDK) InitializeSRWLock(platformLock) #endif @@ -45,7 +45,7 @@ internal struct Lock { fileprivate static func deinitialize(_ platformLock: PlatformLock) { #if canImport(Glibc) - pthread_mutex_destroy(platformLock) + precondition(pthread_mutex_destroy(platformLock) == 0, "pthread_mutex_destroy failed") #endif platformLock.deinitialize(count: 1) } @@ -64,7 +64,7 @@ internal struct Lock { #if canImport(Darwin) os_unfair_lock_unlock(platformLock) #elseif canImport(Glibc) - pthread_mutex_unlock(platformLock) + precondition(pthread_mutex_unlock(platformLock) == 0, "pthread_mutex_unlock failed") #elseif canImport(WinSDK) ReleaseSRWLockExclusive(platformLock) #endif