summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2010-04-30 16:37:52 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2010-04-30 16:37:52 (GMT)
commitb9a20ad036ea0e4b8dd2f57158375d5138dd0663 (patch)
tree35abb81f2c0c83526901f24af0119ab0c4a315a1
parent56d6410c2dfd60c109de6d3a59dab25d29dda9ce (diff)
downloadcpython-b9a20ad036ea0e4b8dd2f57158375d5138dd0663.zip
cpython-b9a20ad036ea0e4b8dd2f57158375d5138dd0663.tar.gz
cpython-b9a20ad036ea0e4b8dd2f57158375d5138dd0663.tar.bz2
PyUnicode_DecodeFSDefaultAndSize() uses surrogateescape error handler
This function is only used to decode Python module filenames, but Python doesn't support surrogates in modules filenames yet. So nobody noticed this minor bug.
-rw-r--r--Misc/NEWS2
-rw-r--r--Objects/unicodeobject.c8
2 files changed, 6 insertions, 4 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index e1b0116..b7e9318 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,8 @@ What's New in Python 3.2 Alpha 1?
Core and Builtins
-----------------
+- PyUnicode_DecodeFSDefaultAndSize() uses surrogateescape error handler
+
- Issue #8419: Prevent the dict constructor from accepting non-string keyword
arguments.
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 369306e..23b322f 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -1600,19 +1600,19 @@ PyUnicode_DecodeFSDefaultAndSize(const char *s, Py_ssize_t size)
if (Py_FileSystemDefaultEncoding) {
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
if (strcmp(Py_FileSystemDefaultEncoding, "mbcs") == 0) {
- return PyUnicode_DecodeMBCS(s, size, "replace");
+ return PyUnicode_DecodeMBCS(s, size, "surrogateescape");
}
#elif defined(__APPLE__)
if (strcmp(Py_FileSystemDefaultEncoding, "utf-8") == 0) {
- return PyUnicode_DecodeUTF8(s, size, "replace");
+ return PyUnicode_DecodeUTF8(s, size, "surrogateescape");
}
#endif
return PyUnicode_Decode(s, size,
Py_FileSystemDefaultEncoding,
- "replace");
+ "surrogateescape");
}
else {
- return PyUnicode_DecodeUTF8(s, size, "replace");
+ return PyUnicode_DecodeUTF8(s, size, "surrogateescape");
}
}