]> granicus.if.org Git - python/commitdiff
Accept u"..." literals even when Unicode is disabled. But these
authorGuido van Rossum <guido@python.org>
Tue, 28 May 2002 18:47:29 +0000 (18:47 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 28 May 2002 18:47:29 +0000 (18:47 +0000)
literals must not contain \u, \U or \N escapes.  (XXX Should they also
not contain non-ASCII characters?)

Python/compile.c

index d41867f7cf8f63720652db1184bbee754ed57e04..cdb72acf84e44a5f75e0b90ae5ffbafc3c1b0703 100644 (file)
@@ -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];