diff options
author | Victor Stinner <vstinner@redhat.com> | 2018-10-30 12:59:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-30 12:59:20 +0100 |
commit | 21220bbe65108f5a763ead24a6b572f80d84c9e2 (patch) | |
tree | 9461c9327a7b4129f2a67dd256d1e23993cc906b /Python | |
parent | 58f7bf3a892031616a6b06ef4b8d36e2ebec172b (diff) | |
download | cpython-git-21220bbe65108f5a763ead24a6b572f80d84c9e2.tar.gz |
bpo-34403: Fix initfsencoding() for ASCII (GH-10233)
* Add _Py_GetForceASCII(): check if Python forces the usage of ASCII
in Py_DecodeLocale() and Py_EncodeLocale().
* initfsencoding() now uses ASCII if _Py_GetForceASCII() is true.
Diffstat (limited to 'Python')
-rw-r--r-- | Python/fileutils.c | 12 | ||||
-rw-r--r-- | Python/pylifecycle.c | 4 |
2 files changed, 16 insertions, 0 deletions
diff --git a/Python/fileutils.c b/Python/fileutils.c index e72ce543cb..1b7e6697c7 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -180,6 +180,18 @@ error: return 1; } + +int +_Py_GetForceASCII(void) +{ + if (force_ascii == -1) { + force_ascii = check_force_ascii(); + } + return force_ascii; +} + + + static int encode_ascii(const wchar_t *text, char **str, size_t *error_pos, const char **reason, diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index ba4b54864f..c01b21ffeb 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -1615,6 +1615,10 @@ initfsencoding(PyInterpreterState *interp) Py_FileSystemDefaultEncoding = "utf-8"; Py_HasFileSystemDefaultEncoding = 1; } + else if (_Py_GetForceASCII()) { + Py_FileSystemDefaultEncoding = "ascii"; + Py_HasFileSystemDefaultEncoding = 1; + } else if (Py_FileSystemDefaultEncoding == NULL) { Py_FileSystemDefaultEncoding = get_locale_encoding(); if (Py_FileSystemDefaultEncoding == NULL) { |