summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sdl.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/sdl.c b/sdl.c
index a9869603d..596807a4b 100644
--- a/sdl.c
+++ b/sdl.c
@@ -119,6 +119,17 @@ static void SdlAbort(int sig)
{
/* Own hand-made parachute for the cases of failed assertions. */
SDL_CALL SDL_Quit();
+
+ switch (sig) {
+ case SIGSEGV:
+ case SIGFPE:
+ signal(sig, SIG_DFL);
+ raise(sig);
+ break;
+
+ default:
+ break;
+ }
}
#endif
@@ -141,6 +152,8 @@ static char *SdlOpen(uint32 x)
#ifdef UNIX
signal(SIGABRT, SdlAbort);
+ signal(SIGSEGV, SdlAbort);
+ signal(SIGFPE, SdlAbort);
#endif
return NULL;
@@ -154,6 +167,8 @@ static void SdlClose(uint32 x)
SDL_CALL SDL_Quit();
#ifdef UNIX
signal(SIGABRT, SIG_DFL);
+ signal(SIGSEGV, SIG_DFL);
+ signal(SIGFPE, SIG_DFL);
#endif
}
}