diff options
author | Walter Dörwald <walter@livinglogic.de> | 2003-04-02 16:37:24 (GMT) |
---|---|---|
committer | Walter Dörwald <walter@livinglogic.de> | 2003-04-02 16:37:24 (GMT) |
commit | 44f527fea4c73038322c7c6647e20e47c2ccdd88 (patch) | |
tree | e920c6ed07d27c81c080a3fd8297dc6fd66418c2 | |
parent | 7ba256f039ff917bfa3fe6fc0f9a6abd8e922ef3 (diff) | |
download | cpython-44f527fea4c73038322c7c6647e20e47c2ccdd88.zip cpython-44f527fea4c73038322c7c6647e20e47c2ccdd88.tar.gz cpython-44f527fea4c73038322c7c6647e20e47c2ccdd88.tar.bz2 |
Change formatchar(), so that u"%c" % 0xffffffff now raises
an OverflowError instead of a TypeError to be consistent
with "%c" % 256. See SF patch #710127.
-rw-r--r-- | Lib/test/test_unicode.py | 2 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Objects/unicodeobject.c | 4 |
3 files changed, 5 insertions, 4 deletions
diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py index 2f19c51..28837b4 100644 --- a/Lib/test/test_unicode.py +++ b/Lib/test/test_unicode.py @@ -360,7 +360,7 @@ class UnicodeTest( self.assertEqual(u"%(x)s, %(\xfc)s" % {'x':u"abc", u'\xfc':"def"}, u'abc, def') self.assertEqual(u'%c' % 0x1234, u'\u1234') - self.assertRaises(ValueError, u"%c".__mod__, (sys.maxunicode+1,)) + self.assertRaises(OverflowError, u"%c".__mod__, (sys.maxunicode+1,)) # formatting jobs delegated from the string implementation: self.assertEqual('...%(foo)s...' % {'foo':u"abc"}, u'...abc...') @@ -35,7 +35,8 @@ Core and builtins interpreter executions, would fail. - "%c" % u"a" now returns a unicode string instead of raising a - TypeError. See SF patch #710127. + TypeError. u"%c" % 0xffffffff now raises a OverflowError instead + of a TypeError to be consistent with "%c" % 256. See SF patch #710127. Extension modules ----------------- diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index dcfde34..b167a1d 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -6157,14 +6157,14 @@ formatchar(Py_UNICODE *buf, goto onError; #ifdef Py_UNICODE_WIDE if (x < 0 || x > 0x10ffff) { - PyErr_SetString(PyExc_ValueError, + PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000) " "(wide Python build)"); return -1; } #else if (x < 0 || x > 0xffff) { - PyErr_SetString(PyExc_ValueError, + PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x10000) " "(narrow Python build)"); return -1; |