From 0e19e76aba9f470c348e25bb2d550f9a096642bd Mon Sep 17 00:00:00 2001 From: Fredrik Lundh Date: Sun, 16 Jul 2000 18:47:43 +0000 Subject: - change \x to mean "byte" also in unicode literals (patch #100912) --- Objects/unicodeobject.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 989ad1f..3542879 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -1198,13 +1198,15 @@ PyObject *PyUnicode_DecodeUnicodeEscape(const char *s, *p++ = x; break; - /* \xXXXX escape with 0-4 hex digits */ + /* \xXXXX escape with 1-n hex digits. for compatibility + with 8-bit strings, this code ignores all but the last + two digits */ case 'x': x = 0; c = (unsigned char)*s; if (isxdigit(c)) { do { - x = (x<<4) & ~0xF; + x = (x<<4) & 0xF0; if ('0' <= c && c <= '9') x += c - '0'; else if ('a' <= c && c <= 'f') @@ -1213,7 +1215,7 @@ PyObject *PyUnicode_DecodeUnicodeEscape(const char *s, x += 10 + c - 'A'; c = (unsigned char)*++s; } while (isxdigit(c)); - *p++ = x; + *p++ = (unsigned char) x; } else { *p++ = '\\'; *p++ = (unsigned char)s[-1]; -- cgit v0.12