- 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
This commit is contained in:
parent
adcd01d7dc
commit
794f5cc154
1 changed files with 14 additions and 0 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue