summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Include/object.h4
-rw-r--r--Modules/stdwinmodule.c3
-rw-r--r--Python/pythonmain.c6
-rw-r--r--Python/traceback.c10
4 files changed, 14 insertions, 9 deletions
diff --git a/Include/object.h b/Include/object.h
index 5a93000..750cd80 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -162,7 +162,7 @@ typedef struct _typeobject {
/* Methods to implement standard operations */
void (*tp_dealloc) FPROTO((object *));
- void (*tp_print) FPROTO((object *, FILE *, int));
+ int (*tp_print) FPROTO((object *, FILE *, int));
object *(*tp_getattr) FPROTO((object *, char *));
int (*tp_setattr) FPROTO((object *, char *, object *));
int (*tp_compare) FPROTO((object *, object *));
@@ -180,7 +180,7 @@ extern typeobject Typetype; /* The type of type objects */
#define is_typeobject(op) ((op)->ob_type == &Typetype)
/* Generic operations on objects */
-extern void printobject PROTO((object *, FILE *, int));
+extern int printobject PROTO((object *, FILE *, int));
extern object * reprobject PROTO((object *));
extern int cmpobject PROTO((object *, object *));
extern object *getattr PROTO((object *, char *));
diff --git a/Modules/stdwinmodule.c b/Modules/stdwinmodule.c
index 494b15e..9b436af 100644
--- a/Modules/stdwinmodule.c
+++ b/Modules/stdwinmodule.c
@@ -1286,13 +1286,14 @@ window_dealloc(wp)
free((char *)wp);
}
-static void
+static int
window_print(wp, fp, flags)
windowobject *wp;
FILE *fp;
int flags;
{
fprintf(fp, "<window titled '%s'>", getstringvalue(wp->w_title));
+ return 0;
}
static object *
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 @@ print_error()
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 @@ tb_printinternal(tb, fp)
FILE *fp;
{
while (tb != NULL) {
- if (intrcheck()) {
- fprintf(fp, "[interrupted]\n");
+ if (intrcheck())
break;
- }
fprintf(fp, " File \"");
- printobject(tb->tb_frame->f_code->co_filename, fp, PRINT_RAW);
+ if (printobject(tb->tb_frame->f_code->co_filename,
+ fp, PRINT_RAW) != 0) {
+ err_clear();
+ break;
+ }
fprintf(fp, "\", line %d\n", tb->tb_lineno);
tb_displayline(fp,
getstringvalue(tb->tb_frame->f_code->co_filename),