changeset 18776:bd334b6af257

Enter true debug mode after debug_on_(warning|error) (bug #37574). * error.cc (warning_1, error_2): Set tree_evaluator::debug_mode to true before calling do_keyboard to handle debug prompt.
author Rik <rik@octave.org>
date Thu, 08 May 2014 14:04:35 -0700
parents 0461fe1d2a01
children be0978e94806
files libinterp/corefcn/error.cc
diffstat 1 files changed, 10 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/error.cc	Wed May 07 09:34:45 2014 -0700
+++ b/libinterp/corefcn/error.cc	Thu May 08 14:04:35 2014 -0700
@@ -40,6 +40,7 @@
 #include "utils.h"
 #include "ov.h"
 #include "ov-usr-fcn.h"
+#include "pt-eval.h"
 #include "pt-pr-code.h"
 #include "pt-stmt.h"
 #include "toplev.h"
@@ -66,8 +67,7 @@
 // TRUE means that Octave will print a verbose warning.  Currently unused.
 static bool Vverbose_warning;
 
-// TRUE means that Octave will print no warnings, but lastwarn will be
-//updated
+// TRUE means that Octave will print no warnings, but lastwarn will be updated
 static bool Vquiet_warning = false;
 
 // A structure containing (most of) the current state of warnings.
@@ -469,6 +469,10 @@
 
       pr_where ("error");
 
+      tree_evaluator::debug_mode = true;
+
+      tree_evaluator::current_frame = octave_call_stack::current_frame ();
+
       do_keyboard (octave_value_list ());
     }
 }
@@ -657,6 +661,10 @@
           frame.protect_var (Vdebug_on_warning);
           Vdebug_on_warning = false;
 
+          tree_evaluator::debug_mode = true;
+
+          tree_evaluator::current_frame = octave_call_stack::current_frame ();
+
           do_keyboard (octave_value_list ());
         }
     }