Handle assertion failures when SDL_Init() isn't called.
--- a/src/SDL_assert.c Wed Jan 13 09:13:37 2010 +0000
+++ b/src/SDL_assert.c Wed Jan 13 09:44:17 2010 +0000
@@ -351,8 +351,19 @@
int line)
{
static int assertion_running = 0;
+ static SDL_SpinLock spinlock = 0;
SDL_assert_state state = SDL_ASSERTION_IGNORE;
+ SDL_AtomicLock(&spinlock);
+ if (assertion_mutex == NULL) { /* never called SDL_Init()? */
+ assertion_mutex = SDL_CreateMutex();
+ if (assertion_mutex == NULL) {
+ SDL_AtomicUnlock(&spinlock);
+ return SDL_ASSERTION_IGNORE; /* oh well, I guess. */
+ }
+ }
+ SDL_AtomicUnlock(&spinlock);
+
if (SDL_LockMutex(assertion_mutex) < 0) {
return SDL_ASSERTION_IGNORE; /* oh well, I guess. */
}