rendered paste bodyIndex: test/test.c
===================================================================
--- test/test.c (revision 1557)
+++ test/test.c (working copy)
@@ -186,6 +186,11 @@
/* Exit ASAP on Ctrl-C */
signal( SIGINT, SigHandler );
+ /* Catch crashes and exit gracefully, if possible. */
+ signal( SIGSEGV, SigHandler );
+ signal( SIGBUS, SigHandler );
+ signal( SIGFPE, SigHandler );
+
/* Feed libhb with a DVD to scan */
fprintf( stderr, "Opening %s...\n", input );
@@ -1397,12 +1402,17 @@
static volatile int64_t i_die_date = 0;
void SigHandler( int i_signal )
{
+ if( i_signal != SIGINT )
+ {
+ hb_error( "HandBrake has crashed on signal %d..." i_signal );
+ }
+
if( die == 0 )
{
die = 1;
i_die_date = hb_get_date();
fprintf( stderr, "Signal %d received, terminating - do it "
- "again in case it gets stuck\n", i_signal );
+ "again if it gets stuck\n", i_signal );
}
else if( i_die_date + 500 < hb_get_date() )
{
Index: macosx/main.mm
===================================================================
--- macosx/main.mm (revision 1557)
+++ macosx/main.mm (working copy)
@@ -9,6 +9,10 @@
void SigHandler( int signal )
{
+ if( i_signal != SIGINT )
+ {
+ hb_error( "HandBrake has crashed on signal %d..." i_signal );
+ }
[NSApp terminate: NULL];
}
@@ -28,6 +32,10 @@
int main( int argc, const char ** argv )
{
signal( SIGINT, SigHandler );
+ signal( SIGBUS, SigHandler );
+ signal( SIGSEGV, SigHandler );
+ signal( SIGFPE, SigHandler );
+
hb_register_error_handler(&hb_error_handler);
return NSApplicationMain( argc, argv );
}