summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2000-05-04 15:55:17 (GMT)
committerGuido van Rossum <guido@python.org>2000-05-04 15:55:17 (GMT)
commit69529ad0ccbe2fb68427de92763d7a5322b63d31 (patch)
tree9870c419770dbd395cc3391df43c1e776897ff36
parent03e29f1ae9999ae341c9f1a9c9bba15ddfa6e7b1 (diff)
downloadcpython-69529ad0ccbe2fb68427de92763d7a5322b63d31.zip
cpython-69529ad0ccbe2fb68427de92763d7a5322b63d31.tar.gz
cpython-69529ad0ccbe2fb68427de92763d7a5322b63d31.tar.bz2
When the UTF-8 conversion to Unicode fails, return an 8-bit string
instead. This seems more robust than returning an Unicode string with some unconverted charcters in it. This still doesn't support getting truly binary data out of Tcl, since we look for the trailing null byte; but the old (pre-Unicode) code did this too, so apparently there's no need. (Plus, I really don't feel like finding out how Tcl deals with this in each version.)
-rw-r--r--Modules/_tkinter.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 882715f..6c3beef 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -654,7 +654,11 @@ Tkapp_Call(self, args)
else {
/* Convert UTF-8 to Unicode string */
p = strchr(p, '\0');
- res = PyUnicode_DecodeUTF8(s, (int)(p-s), "ignore");
+ res = PyUnicode_DecodeUTF8(s, (int)(p-s), "strict");
+ if (res == NULL) {
+ PyErr_Clear();
+ res = PyString_FromStringAndSize(s, (int)(p-s));
+ }
}
}