Check for write errors after printing a value
diff --git a/Objects/object.c b/Objects/object.c
index 79c12f2..2000f03 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -67,6 +67,7 @@
 	FILE *fp;
 	int flags;
 {
+	int ret = 0;
 	if (intrcheck()) {
 		err_set(KeyboardInterrupt);
 		return -1;
@@ -81,9 +82,16 @@
 			fprintf(fp, "<%s object at %lx>",
 				op->ob_type->tp_name, (long)op);
 		else
-			return (*op->ob_type->tp_print)(op, fp, flags);
+			ret = (*op->ob_type->tp_print)(op, fp, flags);
 	}
-	return 0;
+	if (ret == 0) {
+		if (ferror(fp)) {
+			err_errno(RuntimeError);
+			clearerr(fp);
+			ret = -1;
+		}
+	}
+	return ret;
 }
 
 object *