- change \x to mean "byte" also in unicode literals

(patch #100912)
This commit is contained in:
Fredrik Lundh 2000-07-16 18:47:43 +00:00
parent 855ffac224
commit 0e19e76aba
1 changed files with 5 additions and 3 deletions

View File

@ -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];