mirror of
https://github.com/python/cpython.git
synced 2025-08-22 17:55:18 +00:00
Issue #1545463: At shutdown, defer finalization of codec modules so that stderr remains usable.
(should fix Windows buildbot failures on test_gc)
This commit is contained in:
parent
d62a514386
commit
070cb3c9be
5 changed files with 96 additions and 25 deletions
|
@ -800,8 +800,8 @@ PyErr_WarnExplicit(PyObject *category, const char *text,
|
|||
goto exit;
|
||||
if (module_str != NULL) {
|
||||
module = PyUnicode_FromString(module_str);
|
||||
if (module == NULL)
|
||||
goto exit;
|
||||
if (module == NULL)
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (category == NULL)
|
||||
|
@ -820,6 +820,49 @@ PyErr_WarnExplicit(PyObject *category, const char *text,
|
|||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
PyErr_WarnExplicitFormat(PyObject *category,
|
||||
const char *filename_str, int lineno,
|
||||
const char *module_str, PyObject *registry,
|
||||
const char *format, ...)
|
||||
{
|
||||
PyObject *message;
|
||||
PyObject *module = NULL;
|
||||
PyObject *filename = PyUnicode_DecodeFSDefault(filename_str);
|
||||
int ret = -1;
|
||||
va_list vargs;
|
||||
|
||||
if (filename == NULL)
|
||||
goto exit;
|
||||
if (module_str != NULL) {
|
||||
module = PyUnicode_FromString(module_str);
|
||||
if (module == NULL)
|
||||
goto exit;
|
||||
}
|
||||
|
||||
#ifdef HAVE_STDARG_PROTOTYPES
|
||||
va_start(vargs, format);
|
||||
#else
|
||||
va_start(vargs);
|
||||
#endif
|
||||
message = PyUnicode_FromFormatV(format, vargs);
|
||||
if (message != NULL) {
|
||||
PyObject *res;
|
||||
res = warn_explicit(category, message, filename, lineno,
|
||||
module, registry, NULL);
|
||||
Py_DECREF(message);
|
||||
if (res != NULL) {
|
||||
Py_DECREF(res);
|
||||
ret = 0;
|
||||
}
|
||||
}
|
||||
va_end(vargs);
|
||||
exit:
|
||||
Py_XDECREF(module);
|
||||
Py_XDECREF(filename);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
PyDoc_STRVAR(warn_doc,
|
||||
"Issue a warning, or maybe ignore it or raise an exception.");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue