printobject now returns an error code
diff --git a/Python/pythonmain.c b/Python/pythonmain.c
index b855520..9fa1a58 100644
--- a/Python/pythonmain.c
+++ b/Python/pythonmain.c
@@ -289,10 +289,12 @@
object *exception, *v;
err_get(&exception, &v);
fprintf(stderr, "Unhandled exception: ");
- printobject(exception, stderr, PRINT_RAW);
+ if (printobject(exception, stderr, PRINT_RAW) != 0)
+ err_clear();
if (v != NULL && v != None) {
fprintf(stderr, ": ");
- printobject(v, stderr, PRINT_RAW);
+ if (printobject(v, stderr, PRINT_RAW) != 0)
+ err_clear();
}
fprintf(stderr, "\n");
XDECREF(exception);
diff --git a/Python/traceback.c b/Python/traceback.c
index 0b6904f..e71f6fa 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -186,12 +186,14 @@
FILE *fp;
{
while (tb != NULL) {
- if (intrcheck()) {
- fprintf(fp, "[interrupted]\n");
+ if (intrcheck())
+ break;
+ fprintf(fp, " File \"");
+ if (printobject(tb->tb_frame->f_code->co_filename,
+ fp, PRINT_RAW) != 0) {
+ err_clear();
break;
}
- fprintf(fp, " File \"");
- printobject(tb->tb_frame->f_code->co_filename, fp, PRINT_RAW);
fprintf(fp, "\", line %d\n", tb->tb_lineno);
tb_displayline(fp,
getstringvalue(tb->tb_frame->f_code->co_filename),