summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Dörwald <walter@livinglogic.de>2003-04-02 16:37:24 (GMT)
committerWalter Dörwald <walter@livinglogic.de>2003-04-02 16:37:24 (GMT)
commit44f527fea4c73038322c7c6647e20e47c2ccdd88 (patch)
treee920c6ed07d27c81c080a3fd8297dc6fd66418c2
parent7ba256f039ff917bfa3fe6fc0f9a6abd8e922ef3 (diff)
downloadcpython-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.py2
-rw-r--r--Misc/NEWS3
-rw-r--r--Objects/unicodeobject.c4
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...')
diff --git a/Misc/NEWS b/Misc/NEWS
index fb829b9..673af1c 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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;