# HG changeset patch # User Sam Lantinga # Date 1253518506 0 # Node ID 77f2f10b81a7bd4dd2c902d8565e8f2f68792179 # Parent d390778b59c118eac0ba517049133c5c03704624 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. diff -r d390778b59c1 -r 77f2f10b81a7 src/thread/generic/SDL_syssem.c --- a/src/thread/generic/SDL_syssem.c Mon Sep 21 05:24:54 2009 +0000 +++ b/src/thread/generic/SDL_syssem.c Mon Sep 21 07:35:06 2009 +0000 @@ -176,7 +176,9 @@ sem->count_lock, timeout); } --sem->waiters_count; - --sem->count; + if (retval == 0) { + --sem->count; + } SDL_UnlockMutex(sem->count_lock); return retval;