Mercurial > octave
changeset 20639:31219c56874f
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.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 20 Oct 2015 11:16:33 -0400 |
parents | 6e81f4b37e13 |
children | 2b0886f2c186 |
files | libinterp/corefcn/input.cc |
diffstat | 1 files changed, 20 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- 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; } } }