From 77bb47b3125d271408642505cbc4edd074eb7f1c Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 3 Oct 2011 20:06:05 +0200 Subject: [PATCH] Simplify unicode_resizable(): singletons reference count is at least 2 --- Objects/unicodeobject.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 1d90f69be06d..46332fbb81fe 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -1257,26 +1257,20 @@ unicode_dealloc(register PyUnicodeObject *unicode) static int unicode_resizable(PyObject *unicode) { - Py_ssize_t len; if (Py_REFCNT(unicode) != 1) return 0; if (PyUnicode_CHECK_INTERNED(unicode)) return 0; - if (unicode == unicode_empty) - return 0; - if (_PyUnicode_KIND(unicode) == PyUnicode_WCHAR_KIND) - len = PyUnicode_WSTR_LENGTH(unicode); - else - len = PyUnicode_GET_LENGTH(unicode); - if (len == 1) { - Py_UCS4 ch; - if (_PyUnicode_KIND(unicode) == PyUnicode_WCHAR_KIND) - ch = _PyUnicode_WSTR(unicode)[0]; - else - ch = PyUnicode_READ_CHAR(unicode, 0); + assert (unicode != unicode_empty); +#ifdef Py_DEBUG + if (_PyUnicode_KIND(unicode) != PyUnicode_WCHAR_KIND + && PyUnicode_GET_LENGTH(unicode) == 1) + { + Py_UCS4 ch = PyUnicode_READ_CHAR(unicode, 0); if (ch < 256 && unicode_latin1[ch] == unicode) return 0; } +#endif return 1; } -- 2.47.3