Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/bits/signal.hfa

    r8a13c47 r58b6d1b  
    3737
    3838        act.sa_sigaction = (void (*)(int, siginfo_t *, void *))handler;
    39         sigemptyset( &act.sa_mask );
    40         sigaddset( &act.sa_mask, SIGALRM );             // disabled during signal handler
    41         sigaddset( &act.sa_mask, SIGUSR1 );
    42         sigaddset( &act.sa_mask, SIGSEGV );
    43         sigaddset( &act.sa_mask, SIGBUS );
    44         sigaddset( &act.sa_mask, SIGILL );
    45         sigaddset( &act.sa_mask, SIGFPE );
    46         sigaddset( &act.sa_mask, SIGHUP );              // revert to default on second delivery
    47         sigaddset( &act.sa_mask, SIGTERM );
    48         sigaddset( &act.sa_mask, SIGINT );
    4939        act.sa_flags = flags;
    5040
    51         if ( sigaction( sig, &act, 0p ) == -1 ) {
     41        if ( sigaction( sig, &act, NULL ) == -1 ) {
    5242                __cfaabi_dbg_print_buffer_decl(
    5343                        " __cfaabi_sigaction( sig:%d, handler:%p, flags:%d ), problem installing signal handler, error(%d) %s.\n",
     
    5545                );
    5646                _exit( EXIT_FAILURE );
    57         } // if
     47        }
    5848}
     49
     50// Sigaction wrapper : restore default handler
     51static void __cfaabi_sigdefault( int sig ) {
     52        struct sigaction act;
     53
     54        act.sa_handler = SIG_DFL;
     55        act.sa_flags = 0;
     56        sigemptyset( &act.sa_mask );
     57
     58        if ( sigaction( sig, &act, NULL ) == -1 ) {
     59                __cfaabi_dbg_print_buffer_decl(
     60                        " __cfaabi_sigdefault( sig:%d ), problem reseting signal handler, error(%d) %s.\n",
     61                        sig, errno, strerror( errno )
     62                );
     63                _exit( EXIT_FAILURE );
     64        }
     65}
Note: See TracChangeset for help on using the changeset viewer.