diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2016-10-09 20:44:48 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2016-10-09 20:44:48 (GMT) |
commit | 2e58f1a52a967c8c5a8c61ac2334cf659f6e4c82 (patch) | |
tree | 40cfbd93cd49695a9a5751f7ff5eda6d40d5a1c3 | |
parent | 1aa85a9eeac3f0ec5c6015fa1317e7d56690ac9a (diff) | |
download | cpython-2e58f1a52a967c8c5a8c61ac2334cf659f6e4c82.zip cpython-2e58f1a52a967c8c5a8c61ac2334cf659f6e4c82.tar.gz cpython-2e58f1a52a967c8c5a8c61ac2334cf659f6e4c82.tar.bz2 |
Issue #28400: Removed uncessary checks in unicode_char and resize_copy.
1. In resize_copy we don't need to PyUnicode_READY(unicode) since when
it's not PyUnicode_WCHAR_KIND it should be ready.
2. In unicode_char, PyUnicode_1BYTE_KIND is handled by get_latin1_char.
Patch by Xiang Zhang.
-rw-r--r-- | Objects/unicodeobject.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index b58cf02..8f34e01 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -1029,8 +1029,7 @@ resize_copy(PyObject *unicode, Py_ssize_t length) if (_PyUnicode_KIND(unicode) != PyUnicode_WCHAR_KIND) { PyObject *copy; - if (PyUnicode_READY(unicode) == -1) - return NULL; + assert(PyUnicode_IS_READY(unicode)); copy = PyUnicode_New(length, PyUnicode_MAX_CHAR_VALUE(unicode)); if (copy == NULL) @@ -1974,14 +1973,11 @@ unicode_char(Py_UCS4 ch) unicode = PyUnicode_New(1, ch); if (unicode == NULL) return NULL; - switch (PyUnicode_KIND(unicode)) { - case PyUnicode_1BYTE_KIND: - PyUnicode_1BYTE_DATA(unicode)[0] = (Py_UCS1)ch; - break; - case PyUnicode_2BYTE_KIND: + + assert(PyUnicode_KIND(unicode) != PyUnicode_1BYTE_KIND); + if (PyUnicode_KIND(unicode) == PyUnicode_2BYTE_KIND) { PyUnicode_2BYTE_DATA(unicode)[0] = (Py_UCS2)ch; - break; - default: + } else { assert(PyUnicode_KIND(unicode) == PyUnicode_4BYTE_KIND); PyUnicode_4BYTE_DATA(unicode)[0] = ch; } |