mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
gh-108082: Use PyErr_FormatUnraisable() (GH-111580)
Replace most of calls of _PyErr_WriteUnraisableMsg() and some calls of PyErr_WriteUnraisable(NULL) with PyErr_FormatUnraisable(). Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
parent
a12f624a9d
commit
970e719a7a
18 changed files with 83 additions and 114 deletions
|
@ -1419,13 +1419,13 @@ finalize_modules_delete_special(PyThreadState *tstate, int verbose)
|
|||
PySys_WriteStderr("# clear builtins._\n");
|
||||
}
|
||||
if (PyDict_SetItemString(interp->builtins, "_", Py_None) < 0) {
|
||||
PyErr_WriteUnraisable(NULL);
|
||||
PyErr_FormatUnraisable("Exception ignored on setting builtin variable _");
|
||||
}
|
||||
|
||||
const char * const *p;
|
||||
for (p = sys_deletes; *p != NULL; p++) {
|
||||
if (_PySys_ClearAttrString(interp, *p, verbose) < 0) {
|
||||
PyErr_WriteUnraisable(NULL);
|
||||
PyErr_FormatUnraisable("Exception ignored on clearing sys.%s", *p);
|
||||
}
|
||||
}
|
||||
for (p = sys_files; *p != NULL; p+=2) {
|
||||
|
@ -1436,13 +1436,13 @@ finalize_modules_delete_special(PyThreadState *tstate, int verbose)
|
|||
}
|
||||
PyObject *value;
|
||||
if (PyDict_GetItemStringRef(interp->sysdict, orig_name, &value) < 0) {
|
||||
PyErr_WriteUnraisable(NULL);
|
||||
PyErr_FormatUnraisable("Exception ignored on restoring sys.%s", name);
|
||||
}
|
||||
if (value == NULL) {
|
||||
value = Py_NewRef(Py_None);
|
||||
}
|
||||
if (PyDict_SetItemString(interp->sysdict, name, value) < 0) {
|
||||
PyErr_WriteUnraisable(NULL);
|
||||
PyErr_FormatUnraisable("Exception ignored on restoring sys.%s", name);
|
||||
}
|
||||
Py_DECREF(value);
|
||||
}
|
||||
|
@ -1454,7 +1454,7 @@ finalize_remove_modules(PyObject *modules, int verbose)
|
|||
{
|
||||
PyObject *weaklist = PyList_New(0);
|
||||
if (weaklist == NULL) {
|
||||
PyErr_WriteUnraisable(NULL);
|
||||
PyErr_FormatUnraisable("Exception ignored on removing modules");
|
||||
}
|
||||
|
||||
#define STORE_MODULE_WEAKREF(name, mod) \
|
||||
|
@ -1463,13 +1463,13 @@ finalize_remove_modules(PyObject *modules, int verbose)
|
|||
if (wr) { \
|
||||
PyObject *tup = PyTuple_Pack(2, name, wr); \
|
||||
if (!tup || PyList_Append(weaklist, tup) < 0) { \
|
||||
PyErr_WriteUnraisable(NULL); \
|
||||
PyErr_FormatUnraisable("Exception ignored on removing modules"); \
|
||||
} \
|
||||
Py_XDECREF(tup); \
|
||||
Py_DECREF(wr); \
|
||||
} \
|
||||
else { \
|
||||
PyErr_WriteUnraisable(NULL); \
|
||||
PyErr_FormatUnraisable("Exception ignored on removing modules"); \
|
||||
} \
|
||||
}
|
||||
|
||||
|
@ -1480,7 +1480,7 @@ finalize_remove_modules(PyObject *modules, int verbose)
|
|||
} \
|
||||
STORE_MODULE_WEAKREF(name, mod); \
|
||||
if (PyObject_SetItem(modules, name, Py_None) < 0) { \
|
||||
PyErr_WriteUnraisable(NULL); \
|
||||
PyErr_FormatUnraisable("Exception ignored on removing modules"); \
|
||||
} \
|
||||
}
|
||||
|
||||
|
@ -1494,14 +1494,14 @@ finalize_remove_modules(PyObject *modules, int verbose)
|
|||
else {
|
||||
PyObject *iterator = PyObject_GetIter(modules);
|
||||
if (iterator == NULL) {
|
||||
PyErr_WriteUnraisable(NULL);
|
||||
PyErr_FormatUnraisable("Exception ignored on removing modules");
|
||||
}
|
||||
else {
|
||||
PyObject *key;
|
||||
while ((key = PyIter_Next(iterator))) {
|
||||
PyObject *value = PyObject_GetItem(modules, key);
|
||||
if (value == NULL) {
|
||||
PyErr_WriteUnraisable(NULL);
|
||||
PyErr_FormatUnraisable("Exception ignored on removing modules");
|
||||
continue;
|
||||
}
|
||||
CLEAR_MODULE(key, value);
|
||||
|
@ -1509,7 +1509,7 @@ finalize_remove_modules(PyObject *modules, int verbose)
|
|||
Py_DECREF(key);
|
||||
}
|
||||
if (PyErr_Occurred()) {
|
||||
PyErr_WriteUnraisable(NULL);
|
||||
PyErr_FormatUnraisable("Exception ignored on removing modules");
|
||||
}
|
||||
Py_DECREF(iterator);
|
||||
}
|
||||
|
@ -1529,7 +1529,7 @@ finalize_clear_modules_dict(PyObject *modules)
|
|||
}
|
||||
else {
|
||||
if (PyObject_CallMethodNoArgs(modules, &_Py_ID(clear)) == NULL) {
|
||||
PyErr_WriteUnraisable(NULL);
|
||||
PyErr_FormatUnraisable("Exception ignored on clearing sys.modules");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1541,11 +1541,11 @@ finalize_restore_builtins(PyThreadState *tstate)
|
|||
PyInterpreterState *interp = tstate->interp;
|
||||
PyObject *dict = PyDict_Copy(interp->builtins);
|
||||
if (dict == NULL) {
|
||||
PyErr_WriteUnraisable(NULL);
|
||||
PyErr_FormatUnraisable("Exception ignored on restoring builtins");
|
||||
}
|
||||
PyDict_Clear(interp->builtins);
|
||||
if (PyDict_Update(interp->builtins, interp->builtins_copy)) {
|
||||
PyErr_WriteUnraisable(NULL);
|
||||
PyErr_FormatUnraisable("Exception ignored on restoring builtins");
|
||||
}
|
||||
Py_XDECREF(dict);
|
||||
}
|
||||
|
@ -1707,7 +1707,7 @@ flush_std_files(void)
|
|||
|
||||
if (fout != NULL && fout != Py_None && !file_is_closed(fout)) {
|
||||
if (_PyFile_Flush(fout) < 0) {
|
||||
PyErr_WriteUnraisable(fout);
|
||||
PyErr_FormatUnraisable("Exception ignored on flushing sys.stdout");
|
||||
status = -1;
|
||||
}
|
||||
}
|
||||
|
@ -3037,14 +3037,14 @@ wait_for_thread_shutdown(PyThreadState *tstate)
|
|||
PyObject *threading = PyImport_GetModule(&_Py_ID(threading));
|
||||
if (threading == NULL) {
|
||||
if (_PyErr_Occurred(tstate)) {
|
||||
PyErr_WriteUnraisable(NULL);
|
||||
PyErr_FormatUnraisable("Exception ignored on threading shutdown");
|
||||
}
|
||||
/* else: threading not imported */
|
||||
return;
|
||||
}
|
||||
result = PyObject_CallMethodNoArgs(threading, &_Py_ID(_shutdown));
|
||||
if (result == NULL) {
|
||||
PyErr_WriteUnraisable(threading);
|
||||
PyErr_FormatUnraisable("Exception ignored on threading shutdown");
|
||||
}
|
||||
else {
|
||||
Py_DECREF(result);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue