]> granicus.if.org Git - python/commitdiff
Fix for SF bug [ 817156 ] invalid \U escape gives 0=length unistr.
authorJeremy Hylton <jeremy@alum.mit.edu>
Mon, 6 Oct 2003 05:08:26 +0000 (05:08 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Mon, 6 Oct 2003 05:08:26 +0000 (05:08 +0000)
Lib/test/test_unicode.py
Objects/unicodeobject.c

index 6e40b9faf31a80e6ef27aba13e9700d03dc8227d..18a2d46ba98323fd02cc7b463f316bc0d8dc65bc 100644 (file)
@@ -33,6 +33,13 @@ class UnicodeTest(
             self.assertEqual(realresult, result)
             self.assert_(object is not realresult)
 
+    def test_literals(self):
+        self.assertEqual(u'\xff', u'\u00ff')
+        self.assertEqual(u'\uffff', u'\U0000ffff')
+        self.assertRaises(UnicodeError, eval, 'u\'\\Ufffffffe\'')
+        self.assertRaises(UnicodeError, eval, 'u\'\\Uffffffff\'')
+        self.assertRaises(UnicodeError, eval, 'u\'\\U%08x\'' % 0x110000)
+
     def test_repr(self):
         if not sys.platform.startswith('java'):
             # Test basic sanity of repr()
index 83104d802f31cb8dd53da5b355c985c82aea2f2b..f0480fbba7bbfb8294e521bbe1e59679c0764f4e 100644 (file)
@@ -1750,7 +1750,7 @@ PyObject *PyUnicode_DecodeUnicodeEscape(const char *s,
                     chr += 10 + c - 'A';
             }
             s += i;
-            if (chr == 0xffffffff)
+            if (chr == 0xffffffff && PyErr_Occurred())
                 /* _decoding_error will have already written into the
                    target buffer. */
                 break;