diff --git a/libinterp/corefcn/input.cc b/libinterp/corefcn/input.cc --- a/libinterp/corefcn/input.cc +++ b/libinterp/corefcn/input.cc @@ -600,27 +600,32 @@ get_debug_input (const std::string& prom while (Vdebugging) { - unwind_protect middle_frame; + try + { + reset_error_handler (); - 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) + { + curr_parser.stmt_list->accept (*current_evaluator); - if (command_editor::interrupt (false)) - break; - else + if (octave_completion_matches_called) + octave_completion_matches_called = false; + } + + octave_quit (); + } + } + catch (const octave_execution_exception&) { - if (retval == 0 && curr_parser.stmt_list) - { - curr_parser.stmt_list->accept (*current_evaluator); - - if (octave_completion_matches_called) - octave_completion_matches_called = false; - } - - octave_quit (); + // Ignore errors when in debugging mode; } } }