]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-34403: Fix initfsencoding() for ASCII (GH-10233)
authorVictor Stinner <vstinner@redhat.com>
Tue, 30 Oct 2018 11:59:20 +0000 (12:59 +0100)
committerGitHub <noreply@github.com>
Tue, 30 Oct 2018 11:59:20 +0000 (12:59 +0100)
* 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.

Include/fileutils.h
Python/fileutils.c
Python/pylifecycle.c

index c05ff43f516394a1654f330fe1479fb9d32d7000..d75189a95c50850480d1315ed11457d70b5ab422 100644 (file)
@@ -183,6 +183,10 @@ PyAPI_FUNC(int) _Py_GetLocaleconvNumeric(
 
 #endif   /* Py_LIMITED_API */
 
+#ifdef Py_BUILD_CORE
+PyAPI_FUNC(int) _Py_GetForceASCII(void);
+#endif
+
 #ifdef __cplusplus
 }
 #endif
index e72ce543cb685bca3fb5a96512cfa9883f9cfc25..1b7e6697c74aba565f216f79d044c3b61b3933b5 100644 (file)
@@ -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,
index ba4b54864fd8e746f49ae20cb4925eb4f90fc4e2..c01b21ffebade1b1a9543f650be48e7217433905 100644 (file)
@@ -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) {