From 794f5cc1542bba1128b8f2d6f8a260bf5b3771cd Mon Sep 17 00:00:00 2001 From: mfranz Date: Thu, 10 May 2007 12:50:50 +0000 Subject: [PATCH] - One of the most frequent bug reports is about "terminate called after throwing an instance of 'sg_io_exception'\nAbandon". And this is caused by compiling fgfs/sg without exception support (unlikely) or linking against a libSDL/libglut that was compiled/linked without execption support. While we can't fix that, we can tell the users who's to blame. :-) - handle const char * exceptions --- src/Main/bootstrap.cxx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Main/bootstrap.cxx b/src/Main/bootstrap.cxx index f2018a678..5bfe72297 100644 --- a/src/Main/bootstrap.cxx +++ b/src/Main/bootstrap.cxx @@ -144,6 +144,16 @@ void flush_fpe(void) } #endif +static void terminate() { + cerr << endl << + "Uncaught Exception: you should see a meaningful error message\n" + "here, but your GLUT (or SDL) library was apparently compiled\n" + "and/or linked without exception support. Please complain to\n" + "its provider!" + << endl << endl; + abort(); +} + int _bootstrap_OSInit; // Main entry point; catch any exceptions that have made it this far. @@ -205,6 +215,7 @@ int main ( int argc, char **argv ) { // FIXME: add other, more specific // exceptions. try { + std::set_terminate(terminate); atexit(fgExitCleanup); fgMainInit(argc, argv); } catch (const sg_throwable &t) { @@ -218,6 +229,9 @@ int main ( int argc, char **argv ) { } catch (const string &s) { cerr << "Fatal error: " << s << endl; + } catch (const char *s) { + cerr << "Fatal error: " << s << endl; + } catch (...) { cerr << "Unknown exception in the main loop. Aborting..." << endl; if (errno)