changeset 20828:7883f240d8ea

Clear error/warning ID when lasterror/lastwarning called with just a message. * error.cc (Flasterror, Flastwarning): If nargin == 1 then clear Vlast_error_id. Remove retval declaration and use 'return ovl()' to return multiple output values.
author Rik <rik@octave.org>
date Tue, 08 Dec 2015 09:55:51 -0800
parents b3f985199f3f
children 543eca132fa0
files libinterp/corefcn/error.cc
diffstat 1 files changed, 24 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/error.cc	Tue Dec 08 16:22:54 2015 -0500
+++ b/libinterp/corefcn/error.cc	Tue Dec 08 09:55:51 2015 -0800
@@ -1975,25 +1975,26 @@
   if (nargin > 2)
     print_usage ();
 
-  octave_value_list retval;
   string_vector argv = args.make_argv ("lasterr");
 
   std::string prev_error_id = Vlast_error_id;
   std::string prev_error_message = Vlast_error_message;
 
   if (nargin == 2)
-    Vlast_error_id = argv(2);
-
-  if (nargin > 0)
-    Vlast_error_message = argv(1);
+    {
+      Vlast_error_id = argv(2);
+      Vlast_error_message = argv(1);
+    }
+  else if (nargin == 1)
+    {
+      Vlast_error_id = "";
+      Vlast_error_message = argv(1);
+    }
 
   if (nargin == 0 || nargout > 0)
-    {
-      retval(1) = prev_error_id;
-      retval(0) = prev_error_message;
-    }
-
-  return retval;
+    return ovl (prev_error_message, prev_error_id);
+  else
+    return octave_value_list ();
 }
 
 DEFUN (lastwarn, args, nargout,
@@ -2012,31 +2013,31 @@
 @seealso{warning, lasterror, lasterr}\n\
 @end deftypefn")
 {
-
   int nargin = args.length ();
 
   if (nargin > 2)
     print_usage ();
 
-  octave_value_list retval;
   string_vector argv = args.make_argv ("lastwarn");
 
   std::string prev_warning_id = Vlast_warning_id;
   std::string prev_warning_message = Vlast_warning_message;
 
   if (nargin == 2)
-    Vlast_warning_id = argv(2);
-
-  if (nargin > 0)
-    Vlast_warning_message = argv(1);
+    {
+      Vlast_warning_id = argv(2);
+      Vlast_warning_message = argv(1);
+    }
+  else if (nargin == 1)
+    {
+      Vlast_warning_id = "";
+      Vlast_warning_message = argv(1);
+    }
 
   if (nargin == 0 || nargout > 0)
-    {
-      retval(1) = prev_warning_id;
-      retval(0) = prev_warning_message;
-    }
-
-  return retval;
+    return ovl (prev_warning_message, prev_warning_id);
+  else
+    return octave_value_list ();
 }
 
 /* FIXME: Deprecated in 4.0 and scheduled for removal in 4.4 */