Mercurial > cpython-lru_cache-weakref
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);
