Special case normalization of empty strings. Fixes #924361.

Backported to 2.3.
This commit is contained in:
Martin v. Löwis 2004-04-17 19:36:48 +00:00
parent e5fced781b
commit 61e40bd897
2 changed files with 8 additions and 0 deletions

View File

@ -170,6 +170,7 @@ class UnicodeFunctionsTest(UnicodeDatabaseTest):
def test_normalize(self):
self.assertRaises(TypeError, self.db.normalize)
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
# which requires an external file.

View File

@ -515,6 +515,13 @@ unicodedata_normalize(PyObject *self, PyObject *args)
&form, &PyUnicode_Type, &input))
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)
return nfc_nfkc(input, 0);
if (strcmp(form, "NFKC") == 0)