summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-09-23 12:45:47 (GMT)
committerGitHub <noreply@github.com>2019-09-23 12:45:47 (GMT)
commitfcdb027234566c4d506d6d753c7d5638490fb088 (patch)
treef2de660712a5fb27687ffbc804e63bc3c445d961 /Objects
parentb4d0b39a9b4cd203bcc5b236dc96456e9658119a (diff)
downloadcpython-fcdb027234566c4d506d6d753c7d5638490fb088.zip
cpython-fcdb027234566c4d506d6d753c7d5638490fb088.tar.gz
cpython-fcdb027234566c4d506d6d753c7d5638490fb088.tar.bz2
bpo-38236: Dump path config at first import error (GH-16300)
Python now dumps path configuration if it fails to import the Python codecs of the filesystem and stdio encodings.
Diffstat (limited to 'Objects')
-rw-r--r--Objects/unicodeobject.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 070f795..55b2519 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -15804,13 +15804,13 @@ error:
static PyStatus
-init_stdio_encoding(PyInterpreterState *interp)
+init_stdio_encoding(PyThreadState *tstate)
{
/* Update the stdio encoding to the normalized Python codec name. */
- PyConfig *config = &interp->config;
+ PyConfig *config = &tstate->interp->config;
if (config_get_codec_name(&config->stdio_encoding) < 0) {
return _PyStatus_ERR("failed to get the Python codec name "
- "of the stdio encoding");
+ "of the stdio encoding");
}
return _PyStatus_OK();
}
@@ -15864,15 +15864,18 @@ init_fs_codec(PyInterpreterState *interp)
static PyStatus
-init_fs_encoding(PyInterpreterState *interp)
+init_fs_encoding(PyThreadState *tstate)
{
+ PyInterpreterState *interp = tstate->interp;
+
/* Update the filesystem encoding to the normalized Python codec name.
For example, replace "ANSI_X3.4-1968" (locale encoding) with "ascii"
(Python codec name). */
PyConfig *config = &interp->config;
if (config_get_codec_name(&config->filesystem_encoding) < 0) {
+ _Py_DumpPathConfig(tstate);
return _PyStatus_ERR("failed to get the Python codec "
- "of the filesystem encoding");
+ "of the filesystem encoding");
}
if (init_fs_codec(interp) < 0) {
@@ -15885,14 +15888,12 @@ init_fs_encoding(PyInterpreterState *interp)
PyStatus
_PyUnicode_InitEncodings(PyThreadState *tstate)
{
- PyInterpreterState *interp = tstate->interp;
-
- PyStatus status = init_fs_encoding(interp);
+ PyStatus status = init_fs_encoding(tstate);
if (_PyStatus_EXCEPTION(status)) {
return status;
}
- return init_stdio_encoding(interp);
+ return init_stdio_encoding(tstate);
}