* pythonrun.c: Print exception type+arg *after* stack trace instead of

before it.
* ceval.c, object.c: moved testbool() to object.c (now extern visible)
* stringobject.c: fix bugs in and rationalize string resize in formatstring()
* tokenizer.[ch]: fix non-working code for lines longer than BUFSIZ
This commit is contained in:
Guido van Rossum 1993-05-12 08:24:20 +00:00
parent ad4fcd49fc
commit 6ac258d381
7 changed files with 95 additions and 81 deletions

View file

@ -58,7 +58,6 @@ static int prtrace PROTO((object *, char *));
static void call_exc_trace PROTO((object **, object**, frameobject *));
static int call_trace
PROTO((object **, object **, frameobject *, char *, object *));
static int testbool PROTO((object *));
static object *add PROTO((object *, object *));
static object *sub PROTO((object *, object *));
static object *mul PROTO((object *, object *));
@ -1612,29 +1611,6 @@ flushline()
}
/* Test a value used as condition, e.g., in a for or if statement.
Return -1 if an error occurred */
static int
testbool(v)
object *v;
{
int res;
if (v == None)
res = 0;
else if (v->ob_type->tp_as_number != NULL)
res = (*v->ob_type->tp_as_number->nb_nonzero)(v);
else if (v->ob_type->tp_as_mapping != NULL)
res = (*v->ob_type->tp_as_mapping->mp_length)(v);
else if (v->ob_type->tp_as_sequence != NULL)
res = (*v->ob_type->tp_as_sequence->sq_length)(v);
else
res = 1;
if (res > 0)
res = 1;
return res;
}
static object *
or(v, w)
object *v, *w;

View file

@ -245,6 +245,7 @@ print_error()
if (f == NULL)
fprintf(stderr, "lost sys.stderr\n");
else {
printtraceback(f);
if (writeobject(exception, f, PRINT_RAW) != 0)
err_clear();
if (v != NULL && v != None) {
@ -253,7 +254,6 @@ print_error()
err_clear();
}
writestring("\n", f);
printtraceback(f);
}
XDECREF(exception);
XDECREF(v);