Issue #4971: Fix titlecase for characters that are their own
titlecase, but not their own uppercase.
diff --git a/Lib/test/test_unicodedata.py b/Lib/test/test_unicodedata.py
index 18f37f8..1651b46 100644
--- a/Lib/test/test_unicodedata.py
+++ b/Lib/test/test_unicodedata.py
@@ -20,7 +20,7 @@
class UnicodeMethodsTest(unittest.TestCase):
# update this, if the database changes
- expectedchecksum = 'b7db9b5f1d804976fa921d2009cbef6f025620c1'
+ expectedchecksum = '6ec65b65835614ec00634c674bba0e50cd32c189'
def test_method_checksum(self):
h = hashlib.sha1()
@@ -270,6 +270,11 @@
[0]
)
+ def test_buf_4971(self):
+ # LETTER DZ WITH CARON: DZ, Dz, dz
+ self.assertEqual(u"\u01c4".title(), u"\u01c5")
+ self.assertEqual(u"\u01c5".title(), u"\u01c5")
+ self.assertEqual(u"\u01c6".title(), u"\u01c5")
def test_main():
test.test_support.run_unittest(
diff --git a/Misc/NEWS b/Misc/NEWS
index b211512..7c705f1 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
Core and Builtins
-----------------
+- Issue #4971: Fix titlecase for characters that are their own
+ titlecase, but not their own uppercase.
+
- Issue #5835: Deprecate PyOS_ascii_formatd and replace it with
_PyOS_double_to_string or PyOS_double_to_string.
diff --git a/Objects/unicodectype.c b/Objects/unicodectype.c
index ebfb5b7..2afafb8 100644
--- a/Objects/unicodectype.c
+++ b/Objects/unicodectype.c
@@ -76,12 +76,7 @@
Py_UNICODE _PyUnicode_ToTitlecase(register Py_UNICODE ch)
{
const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
- int delta;
-
- if (ctype->title)
- delta = ctype->title;
- else
- delta = ctype->upper;
+ int delta = ctype->title;
if (ctype->flags & NODELTA_MASK)
return delta;