# HG changeset patch # User John W. Eaton # Date 1445354193 14400 # Node ID 31219c56874f6156b19b5a07baba45e7c115f6de # Parent 6e81f4b37e1399ac70c2b4faaf3759f058f3ddbf don't exit debugger if an error occurs (bug #46251) * input.cc (get_debug_input): Wrap body of loop in try catch block. Eliminate unused unwind_protect object. diff -r 6e81f4b37e13 -r 31219c56874f libinterp/corefcn/input.cc --- a/libinterp/corefcn/input.cc Mon Oct 19 08:22:23 2015 -0700 +++ b/libinterp/corefcn/input.cc Tue Oct 20 11:16:33 2015 -0400 @@ -600,27 +600,32 @@ while (Vdebugging) { - unwind_protect middle_frame; - - reset_error_handler (); + try + { + reset_error_handler (); - curr_parser.reset (); + curr_parser.reset (); - int retval = curr_parser.run (); + int retval = curr_parser.run (); - if (command_editor::interrupt (false)) - break; - else - { - if (retval == 0 && curr_parser.stmt_list) + if (command_editor::interrupt (false)) + break; + else { - curr_parser.stmt_list->accept (*current_evaluator); + if (retval == 0 && curr_parser.stmt_list) + { + curr_parser.stmt_list->accept (*current_evaluator); - if (octave_completion_matches_called) - octave_completion_matches_called = false; + if (octave_completion_matches_called) + octave_completion_matches_called = false; + } + + octave_quit (); } - - octave_quit (); + } + catch (const octave_execution_exception&) + { + // Ignore errors when in debugging mode; } } }