Mercurial > octave
changeset 27286:52542cfcc7dc
always disable debug_on_error and debug_on_warning at debug prompt (bug #56625)
* pt-eval.cc (tree_evaluator::enter_debugger): Disable debug_on_error
and debug_on_warning when entering debugger REPL.
* error.cc (error_system::maybe_enter_debugger): Don't temporarily
disable debug_on_error here.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 23 Jul 2019 15:26:20 -0400 |
parents | 6c438195f4e0 |
children | 871313d4b948 |
files | libinterp/corefcn/error.cc libinterp/parse-tree/pt-eval.cc |
diffstat | 2 files changed, 14 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/error.cc Tue Jul 23 11:01:41 2019 -0400 +++ b/libinterp/corefcn/error.cc Tue Jul 23 15:26:20 2019 -0400 @@ -694,11 +694,6 @@ && bptab.debug_on_caught (last_error_id ()))) && tw.in_user_code ()) { - unwind_protect frame; - - frame.protect_var (m_debug_on_error); - m_debug_on_error = false; - if (show_stack_trace) { std::string stack_trace = e.info ();
--- a/libinterp/parse-tree/pt-eval.cc Tue Jul 23 11:01:41 2019 -0400 +++ b/libinterp/parse-tree/pt-eval.cc Tue Jul 23 15:26:20 2019 -0400 @@ -1143,6 +1143,20 @@ frame.add_method (m_call_stack, &call_stack::restore_frame, m_call_stack.current_frame ()); + // Don't allow errors or warnings at the debug prompt to push us + // into deeper levels of debugging. + + error_system& es = m_interpreter.get_error_system (); + + frame.add_method (es, &error_system::set_debug_on_error, + es.debug_on_error ()); + + frame.add_method (es, &error_system::set_debug_on_warning, + es.debug_on_warning ()); + + es.debug_on_error (false); + es.debug_on_warning (false); + // Go up to the nearest user code frame. m_call_stack.dbupdown (0);