mirror of
https://github.com/python/cpython.git
synced 2025-12-05 09:03:50 +00:00
Special case normalization of empty strings. Fixes #924361.
Backported to 2.3.
This commit is contained in:
parent
e5fced781b
commit
61e40bd897
2 changed files with 8 additions and 0 deletions
|
|
@ -170,6 +170,7 @@ class UnicodeFunctionsTest(UnicodeDatabaseTest):
|
||||||
def test_normalize(self):
|
def test_normalize(self):
|
||||||
self.assertRaises(TypeError, self.db.normalize)
|
self.assertRaises(TypeError, self.db.normalize)
|
||||||
self.assertRaises(ValueError, self.db.normalize, 'unknown', u'xx')
|
self.assertRaises(ValueError, self.db.normalize, 'unknown', u'xx')
|
||||||
|
self.assertEqual(self.db.normalize('NFKC', u''), u'')
|
||||||
# The rest can be found in test_normalization.py
|
# The rest can be found in test_normalization.py
|
||||||
# which requires an external file.
|
# which requires an external file.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -515,6 +515,13 @@ unicodedata_normalize(PyObject *self, PyObject *args)
|
||||||
&form, &PyUnicode_Type, &input))
|
&form, &PyUnicode_Type, &input))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
if (PyUnicode_GetSize(input) == 0) {
|
||||||
|
/* Special case empty input strings, since resizing
|
||||||
|
them later would cause internal errors. */
|
||||||
|
Py_INCREF(input);
|
||||||
|
return input;
|
||||||
|
}
|
||||||
|
|
||||||
if (strcmp(form, "NFC") == 0)
|
if (strcmp(form, "NFC") == 0)
|
||||||
return nfc_nfkc(input, 0);
|
return nfc_nfkc(input, 0);
|
||||||
if (strcmp(form, "NFKC") == 0)
|
if (strcmp(form, "NFKC") == 0)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue