Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/main.cc

    r74330e7 r7006ba5  
    1010// Created On       : Fri May 15 23:12:02 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Feb  8 08:33:50 2020
    13 // Update Count     : 633
     12// Last Modified On : Mon Dec 16 17:55:53 2019
     13// Update Count     : 627
    1414//
    1515
     
    105105
    106106static void backtrace( int start ) {                                    // skip first N stack frames
    107         enum { Frames = 50, };                                                          // maximum number of stack frames
     107        enum { Frames = 50 };
    108108        void * array[Frames];
    109         size_t size = ::backtrace( array, Frames );
     109        int size = ::backtrace( array, Frames );
    110110        char ** messages = ::backtrace_symbols( array, size ); // does not demangle names
    111111
     
    114114
    115115        // skip last 2 stack frames after main
    116         for ( unsigned int i = start; i < size - 2 && messages != nullptr; i += 1 ) {
     116        for ( int i = start; i < size - 2 && messages != nullptr; i += 1 ) {
    117117                char * mangled_name = nullptr, * offset_begin = nullptr, * offset_end = nullptr;
    118118
     
    180180} // sigSegvBusHandler
    181181
    182 static void sigFpeHandler( SIGPARMS ) {
    183         const char * msg;
    184 
    185         switch ( sfp->si_code ) {
    186           case FPE_INTDIV: case FPE_FLTDIV: msg = "divide by zero"; break;
    187           case FPE_FLTOVF: msg = "overflow"; break;
    188           case FPE_FLTUND: msg = "underflow"; break;
    189           case FPE_FLTRES: msg = "inexact result"; break;
    190           case FPE_FLTINV: msg = "invalid operation"; break;
    191           default: msg = "unknown";
    192         } // choose
    193         cerr << "Computation error " << msg << " at location " << sfp->si_addr << endl
    194                  << "Possible cause is constant-expression evaluation invalid." << endl;
    195         backtrace( 2 );                                                                         // skip first 2 stack frames
    196         abort();                                                                                        // cause core dump for debugging
    197 } // sigFpeHandler
    198 
    199182static void sigAbortHandler( SIGPARMS ) {
    200183        backtrace( 6 );                                                                         // skip first 6 stack frames
     
    210193        Signal( SIGSEGV, sigSegvBusHandler, SA_SIGINFO );
    211194        Signal( SIGBUS, sigSegvBusHandler, SA_SIGINFO );
    212         Signal( SIGFPE, sigFpeHandler, SA_SIGINFO );
    213195        Signal( SIGABRT, sigAbortHandler, SA_SIGINFO );
    214196
Note: See TracChangeset for help on using the changeset viewer.