diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2002-09-09 06:17:05 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2002-09-09 06:17:05 (GMT) |
commit | 2412853f8e65f7c4359ebf59902ad2553589b908 (patch) | |
tree | aebb566a44b270af74495836065973125bb9e89f | |
parent | 8a64d40949fdd6adf2a25559b50f0cc7c229ab1f (diff) | |
download | cpython-2412853f8e65f7c4359ebf59902ad2553589b908.zip cpython-2412853f8e65f7c4359ebf59902ad2553589b908.tar.gz cpython-2412853f8e65f7c4359ebf59902ad2553589b908.tar.bz2 |
Fix escaping of non-ASCII characters.
-rw-r--r-- | Lib/test/test_pep263.py | 1 | ||||
-rw-r--r-- | Objects/stringobject.c | 6 |
2 files changed, 5 insertions, 2 deletions
diff --git a/Lib/test/test_pep263.py b/Lib/test/test_pep263.py index b1ffc03..7cc5526 100644 --- a/Lib/test/test_pep263.py +++ b/Lib/test/test_pep263.py @@ -1,2 +1,3 @@ #! -*- coding: koi8-r -*- assert u"ðÉÔÏÎ".encode("utf-8") == '\xd0\x9f\xd0\xb8\xd1\x82\xd0\xbe\xd0\xbd' +assert u"\ð".encode("utf-8") == '\\\xd0\x9f' diff --git a/Objects/stringobject.c b/Objects/stringobject.c index dd38ee3..c090e9b 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -541,6 +541,7 @@ PyObject *PyString_DecodeEscape(const char *s, end = s + len; while (s < end) { if (*s != '\\') { + non_esc: #ifdef Py_USING_UNICODE if (recode_encoding && (*s & 0x80)) { PyObject *u, *w; @@ -656,8 +657,9 @@ PyObject *PyString_DecodeEscape(const char *s, #endif default: *p++ = '\\'; - *p++ = s[-1]; - break; + s--; + goto non_esc; /* an arbitry number of unescaped + UTF-8 bytes may follow. */ } } if (p-buf < newlen) |