Author: pluto
Date: Tue Sep  5 17:03:30 2006
New Revision: 7719

Modified:
   backtracexx/example.cpp
Log:
- play with setjmp/longjmp too.


Modified: backtracexx/example.cpp
==============================================================================
--- backtracexx/example.cpp     (original)
+++ backtracexx/example.cpp     Tue Sep  5 17:03:30 2006
@@ -1,21 +1,28 @@
 #include "backtracexx.hpp"
 
+#include <csetjmp>
 #include <csignal>
 #include <iostream>
 #include <iterator>
 #include <stdexcept>
 
+jmp_buf context;
+
 void signalHandler( int signalNumber )
 {
        backtracexx::symbolic_backtrace_type s = backtracexx::symbols( 
backtracexx::scan() );
        std::copy( s.begin(), s.end(), std::ostream_iterator< std::string >( 
std::cout, "\n" ) );
-       throw std::runtime_error( "fatality." );
+       longjmp( context, 1 );
 }
 
 void zoo()
 {
-       volatile int* p = 0;
-       *p = 0;
+       if ( setjmp( context ) == 0 )
+       {
+               volatile int* p = 0;
+               *p = 0;
+       }
+       throw std::runtime_error( "still alive?" );
 }
 
 void bar( void ( *f )() )
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to