diff Objects/classobject.c @ 14330:6dee1985c681 legacy-trunk

refactor __del__ exception handler into PyErr_WriteUnraisable add sanity check to gc: if an exception occurs during GC, call PyErr_WriteUnraisable and then call Py_FatalEror.
author Jeremy Hylton <jeremy@alum.mit.edu>
date Fri, 01 Sep 2000 02:47:25 +0000
parents ea7040ab7286
children 6f6f965c5e2d
line wrap: on
line diff
--- a/Objects/classobject.c	Fri Sep 01 02:43:38 2000 +0000
+++ b/Objects/classobject.c	Fri Sep 01 02:47:25 2000 +0000
@@ -519,26 +519,7 @@
 	if ((del = instance_getattr2(inst, delstr)) != NULL) {
 		PyObject *res = PyEval_CallObject(del, (PyObject *)NULL);
 		if (res == NULL) {
-			PyObject *f, *t, *v, *tb;
- 			PyErr_Fetch(&t, &v, &tb);
-			f = PySys_GetObject("stderr");
-			if (f != NULL) {
-				PyFile_WriteString("Exception ", f);
-				if (t) {
-					PyFile_WriteObject(t, f, Py_PRINT_RAW);
-					if (v && v != Py_None) {
-						PyFile_WriteString(": ", f);
-						PyFile_WriteObject(v, f, 0);
-					}
-				}
-				PyFile_WriteString(" in ", f);
-				PyFile_WriteObject(del, f, 0);
-				PyFile_WriteString(" ignored\n", f);
-				PyErr_Clear(); /* Just in case */
-			}
-			Py_XDECREF(t);
-			Py_XDECREF(v);
-			Py_XDECREF(tb);
+			PyErr_WriteUnraisable(del);
 		}
 		else
 			Py_DECREF(res);