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;