Mercurial > sdl-ios-xcode
changeset 4209:62e86ab81e3c SDL-1.2
Fixed bug #570
SDL_SemWaitTimeout in src/thread/generic/SDL_syssem.c line 179 (SVN trunk):
--sem->count;
should be
if (retval == 0) {
--sem->count;
}
Without this, sem->count will underflow on timeout effectively breaking the
semaphore. It appears that the implementation has been wrong since the initial
revision.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 21 Sep 2009 07:32:26 +0000 |
parents | 453587d6dc87 |
children | 8f501bbc3bf1 |
files | src/thread/generic/SDL_syssem.c |
diffstat | 1 files changed, 3 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/thread/generic/SDL_syssem.c Mon Sep 21 07:28:03 2009 +0000 +++ b/src/thread/generic/SDL_syssem.c Mon Sep 21 07:32:26 2009 +0000 @@ -165,7 +165,9 @@ sem->count_lock, timeout); } --sem->waiters_count; - --sem->count; + if (retval == 0) { + --sem->count; + } SDL_UnlockMutex(sem->count_lock); return retval;