# HG changeset patch # User John W. Eaton # Date 1453768798 18000 # Node ID 34368609f62b80a7a05b826eb473b8af690e59d5 # Parent e06e600f396a82512ef5a0313e1bc28e35c9d880 fix event-queue and unwind-protect exception warnings * event-queue.h (event_queue_safe::warn_unhandled_exception): New function. (event_queue_safe::gripe_exception): Delete decl. * event-queue.cc: New file. (event_queue_safe::warn_unhandled_exception): New function. * libinterp/corefcn/module.mk (COREFCN_SRC): Add it to the list * unwind-prot.cc, unwind-prot.h (unwind_protect_safe::warn_unhandled_exception): Rename from unwind_protect_safe::warn_unhandled_exception. No longer static. diff -r e06e600f396a -r 34368609f62b libinterp/corefcn/event-queue.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libinterp/corefcn/event-queue.cc Mon Jan 25 19:39:58 2016 -0500 @@ -0,0 +1,36 @@ +/* + +Copyright (C) 2016 John W. Eaton + +This file is part of Octave. + +Octave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 3 of the License, or (at your +option) any later version. + +Octave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, see +. + +*/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "error.h" +#include "event-queue.h" + +void +event_queue_safe::warn_unhandled_exception (void) const +{ + warning ("unhandled exception in event_queue_safe handler. " + "It is a bug in Octave for this to happen. " + "Please help improve Octave by reporting it."); +} diff -r e06e600f396a -r 34368609f62b libinterp/corefcn/event-queue.h --- a/libinterp/corefcn/event-queue.h Mon Jan 25 19:16:31 2016 -0500 +++ b/libinterp/corefcn/event-queue.h Mon Jan 25 19:39:58 2016 -0500 @@ -92,7 +92,7 @@ { private: - static void gripe_exception (void); + void warn_unhandled_exception (void) const; public: @@ -108,7 +108,7 @@ } catch (...) // Yes, the black hole. Remember we're in a dtor. { - gripe_exception (); + warn_unhandled_exception (); } } } diff -r e06e600f396a -r 34368609f62b libinterp/corefcn/module.mk --- a/libinterp/corefcn/module.mk Mon Jan 25 19:16:31 2016 -0500 +++ b/libinterp/corefcn/module.mk Mon Jan 25 19:39:58 2016 -0500 @@ -145,6 +145,7 @@ libinterp/corefcn/ellipj.cc \ libinterp/corefcn/error.cc \ libinterp/corefcn/errwarn.cc \ + libinterp/corefcn/event-queue.cc \ libinterp/corefcn/fft.cc \ libinterp/corefcn/fft2.cc \ libinterp/corefcn/fftn.cc \ diff -r e06e600f396a -r 34368609f62b liboctave/util/unwind-prot.cc --- a/liboctave/util/unwind-prot.cc Mon Jan 25 19:16:31 2016 -0500 +++ b/liboctave/util/unwind-prot.cc Mon Jan 25 19:39:58 2016 -0500 @@ -29,10 +29,10 @@ #include "unwind-prot.h" void -unwind_protect_safe::err_unhandled_exception (void) +unwind_protect_safe::warn_unhandled_exception (void) const { - // FIXME: can this throw an exception? - // Yes, it can now (1/18/16). Maybe this needs to be re-done? - (*current_liboctave_error_handler) - ("internal: unhandled exception in unwind_protect handler"); + (*current_liboctave_warning_handler) + ("unhandled exception in unwind_protect_safe handler. " + "It is a bug in Octave for this to happen. " + "Please help improve Octave by reporting it."); } diff -r e06e600f396a -r 34368609f62b liboctave/util/unwind-prot.h --- a/liboctave/util/unwind-prot.h Mon Jan 25 19:16:31 2016 -0500 +++ b/liboctave/util/unwind-prot.h Mon Jan 25 19:39:58 2016 -0500 @@ -117,7 +117,7 @@ { private: - static void err_unhandled_exception (void); + void warn_unhandled_exception (void) const; public: @@ -133,7 +133,7 @@ } catch (...) // Yes, the black hole. Remember we're in a destructor. { - err_unhandled_exception (); + warn_unhandled_exception (); } } }