mirror of https://github.com/OpenTTD/OpenTTD
(svn r653) Prevent SDL parachute from catching SIGSEGV and SIGFPE (pasky)
parent
2760ed80fd
commit
0086bb9d06
15
sdl.c
15
sdl.c
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue