diff options
author | Guido van Rossum <guido@python.org> | 2002-05-28 18:47:29 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2002-05-28 18:47:29 (GMT) |
commit | 05459c5e5ece64ba8da62455970d1c1479011ff7 (patch) | |
tree | a282c5c6c21518aed2d47e1c440fa00217ce5c13 | |
parent | c88da1faa5bfa9b72b38822cb9745ad7be7606a3 (diff) | |
download | cpython-05459c5e5ece64ba8da62455970d1c1479011ff7.zip cpython-05459c5e5ece64ba8da62455970d1c1479011ff7.tar.gz cpython-05459c5e5ece64ba8da62455970d1c1479011ff7.tar.bz2 |
Accept u"..." literals even when Unicode is disabled. But these
literals must not contain \u, \U or \N escapes. (XXX Should they also
not contain non-ASCII characters?)
-rw-r--r-- | Python/compile.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/Python/compile.c b/Python/compile.c index d41867f..cdb72ac 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1130,19 +1130,12 @@ parsestr(struct compiling *com, char *s) int first = *s; int quote = first; int rawmode = 0; -#ifdef Py_USING_UNICODE int unicode = 0; -#endif + if (isalpha(quote) || quote == '_') { if (quote == 'u' || quote == 'U') { -#ifdef Py_USING_UNICODE quote = *++s; unicode = 1; -#else - com_error(com, PyExc_SyntaxError, - "Unicode literals not supported in this Python"); - return NULL; -#endif } if (quote == 'r' || quote == 'R') { quote = *++s; @@ -1250,6 +1243,18 @@ parsestr(struct compiling *com, char *s) com_error(com, PyExc_ValueError, "invalid \\x escape"); return NULL; +#ifndef Py_USING_UNICODE + case 'u': + case 'U': + case 'N': + if (unicode) { + Py_DECREF(v); + com_error(com, PyExc_ValueError, + "Unicode escapes not legal " + "when Unicode disabled"); + return NULL; + } +#endif default: *p++ = '\\'; *p++ = s[-1]; |