mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-06-12 01:15:39 +00:00
Like mutexes, operations on NULL rwlocks are no-ops
Fixes a crash when performing operations on a NULL rwlock before rwlock implementation is chosen
This commit is contained in:
parent
c552cc6847
commit
6c8ad975c7
1 changed files with 23 additions and 1 deletions
|
|
@ -229,30 +229,52 @@ SDL_RWLock *SDL_CreateRWLock(void)
|
|||
|
||||
void SDL_DestroyRWLock(SDL_RWLock *rwlock)
|
||||
{
|
||||
SDL_rwlock_impl_active.Destroy(rwlock);
|
||||
if (rwlock) {
|
||||
SDL_rwlock_impl_active.Destroy(rwlock);
|
||||
}
|
||||
}
|
||||
|
||||
int SDL_LockRWLockForReading(SDL_RWLock *rwlock) SDL_NO_THREAD_SAFETY_ANALYSIS /* clang doesn't know about NULL mutexes */
|
||||
{
|
||||
if (rwlock == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return SDL_rwlock_impl_active.LockForReading(rwlock);
|
||||
}
|
||||
|
||||
int SDL_LockRWLockForWriting(SDL_RWLock *rwlock) SDL_NO_THREAD_SAFETY_ANALYSIS /* clang doesn't know about NULL mutexes */
|
||||
{
|
||||
if (rwlock == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return SDL_rwlock_impl_active.LockForWriting(rwlock);
|
||||
}
|
||||
|
||||
int SDL_TryLockRWLockForReading(SDL_RWLock *rwlock)
|
||||
{
|
||||
if (rwlock == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return SDL_rwlock_impl_active.TryLockForReading(rwlock);
|
||||
}
|
||||
|
||||
int SDL_TryLockRWLockForWriting(SDL_RWLock *rwlock)
|
||||
{
|
||||
if (rwlock == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return SDL_rwlock_impl_active.TryLockForWriting(rwlock);
|
||||
}
|
||||
|
||||
int SDL_UnlockRWLock(SDL_RWLock *rwlock) SDL_NO_THREAD_SAFETY_ANALYSIS /* clang doesn't know about NULL mutexes */
|
||||
{
|
||||
if (rwlock == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return SDL_rwlock_impl_active.Unlock(rwlock);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue