1
0
Fork 0

(svn r653) Prevent SDL parachute from catching SIGSEGV and SIGFPE (pasky)

release/0.4.5
tron 2004-11-17 08:11:24 +00:00
parent 2760ed80fd
commit 0086bb9d06
1 changed files with 15 additions and 0 deletions

15
sdl.c
View File

@ -119,6 +119,17 @@ static void SdlAbort(int sig)
{ {
/* Own hand-made parachute for the cases of failed assertions. */ /* Own hand-made parachute for the cases of failed assertions. */
SDL_CALL SDL_Quit(); SDL_CALL SDL_Quit();
switch (sig) {
case SIGSEGV:
case SIGFPE:
signal(sig, SIG_DFL);
raise(sig);
break;
default:
break;
}
} }
#endif #endif
@ -141,6 +152,8 @@ static char *SdlOpen(uint32 x)
#ifdef UNIX #ifdef UNIX
signal(SIGABRT, SdlAbort); signal(SIGABRT, SdlAbort);
signal(SIGSEGV, SdlAbort);
signal(SIGFPE, SdlAbort);
#endif #endif
return NULL; return NULL;
@ -154,6 +167,8 @@ static void SdlClose(uint32 x)
SDL_CALL SDL_Quit(); SDL_CALL SDL_Quit();
#ifdef UNIX #ifdef UNIX
signal(SIGABRT, SIG_DFL); signal(SIGABRT, SIG_DFL);
signal(SIGSEGV, SIG_DFL);
signal(SIGFPE, SIG_DFL);
#endif #endif
} }
} }