[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
parse errors do not use error handling routines
From: |
John W. Eaton |
Subject: |
parse errors do not use error handling routines |
Date: |
Mon, 2 Feb 2004 14:21:51 -0600 |
On 29-Jan-2004, Paul Kienzle <address@hidden> wrote:
| Syntax errors don't set lasterr in octave-2.1.53. E.g.,
|
| octave> error('this is the last error')
| error: this is the last error
| octave> try eval('if'); catch lasterr, end
| ans = error: this is the last error
Please try the following patch.
Thanks,
jwe
2004-02-02 John W. Eaton <address@hidden>
* error.cc (verror): New arg, save_last_error. Change all callers.
(usage): Set error_state after calling verror.
Index: src/error.cc
===================================================================
RCS file: /usr/local/cvsroot/octave/src/error.cc,v
retrieving revision 1.94
diff -u -r1.94 error.cc
--- src/error.cc 23 Jan 2004 04:08:27 -0000 1.94
+++ src/error.cc 2 Feb 2004 20:20:39 -0000
@@ -154,7 +154,7 @@
}
static void
-verror (const char *name, const char *fmt, va_list args)
+verror (bool save_last_error, const char *name, const char *fmt, va_list args)
{
if (discard_error_messages)
return;
@@ -184,7 +184,7 @@
OSSTREAM_FREEZE (output_buf);
- if (! error_state && name && ! strcmp (name, "error"))
+ if (! error_state && save_last_error)
{
// This is the first error in a possible series.
Vlast_error_message = msg_string;
@@ -240,14 +240,14 @@
{
char *tmp_fmt = strsave (fmt);
tmp_fmt[len - 1] = '\0';
- verror (name, tmp_fmt, args);
+ verror (true, name, tmp_fmt, args);
delete [] tmp_fmt;
}
error_state = -2;
}
else
- verror (name, fmt, args);
+ verror (true, name, fmt, args);
}
}
else
@@ -263,7 +263,7 @@
{
va_list args;
va_start (args, fmt);
- verror (name, fmt, args);
+ verror (false, name, fmt, args);
va_end (args);
}
@@ -272,8 +272,8 @@
{
va_list args;
va_start (args, fmt);
+ verror (true, "usage", fmt, args);
error_state = -1;
- verror ("usage", fmt, args);
va_end (args);
}
@@ -291,12 +291,12 @@
{
char *tmp_fmt = strsave (fmt);
tmp_fmt[len - 1] = '\0';
- verror (0, tmp_fmt, args);
+ verror (false, 0, tmp_fmt, args);
delete [] tmp_fmt;
}
}
else
- verror (0, fmt, args);
+ verror (false, 0, fmt, args);
}
}
else
@@ -433,7 +433,7 @@
va_start (args, fmt);
buffer_error_messages = 0;
discard_error_messages = false;
- verror ("panic", fmt, args);
+ verror (false, "panic", fmt, args);
va_end (args);
abort ();
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- parse errors do not use error handling routines,
John W. Eaton <=