summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_unicode.py7
-rw-r--r--Objects/unicodeobject.c2
2 files changed, 8 insertions, 1 deletions
diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py
index 6e40b9f..18a2d46 100644
--- a/Lib/test/test_unicode.py
+++ b/Lib/test/test_unicode.py
@@ -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()
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 83104d8..f0480fb 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -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;