
Hi Phil, let's start at the beginning:
Next we clean up and issue an exception. Hope this makes sense.
No, it doesn't make sense. Sorry if I am missing something important. Maybe someone else would like to have a look at this code? It's here: http://gil-contributions.googlecode.com/svn/trunk/gil_2/boost/gil/extension/... near the start of the file.
My understanding setjmp/longjmp is this: #include <iostream> #include <csetjmp> static jmp_buf mark; void try_something() { if( setjmp( mark )) { std::cout << "we are back" << std::endl; } } void error_exit() { std::cout << "ups we had a problem" << std::endl; longjmp( mark, 1 ); } int main( int argc, char* argv[] ) { try_something(); error_exit(); return 0; } When error_exit is called we are jumping back to where setjmp was called before. Do you agree that's the correct behavior? Regards, Christian