From: Victor Stinner Date: Wed, 22 Sep 2021 10:16:53 +0000 (+0200) Subject: bpo-45061: Revert unicode_is_singleton() change (GH-28516) X-Git-Tag: v3.11.0a1~93 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8620be99da930230b18ec05f4d7446ee403531af;p=thirdparty%2FPython%2Fcpython.git bpo-45061: Revert unicode_is_singleton() change (GH-28516) Don't use a loop over 256 items, only checks for a single singleton. --- diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index f5919cf5a95c..02bf56e681e5 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -1994,8 +1994,10 @@ unicode_is_singleton(PyObject *unicode) if (unicode == state->empty_string) { return 1; } - for (Py_ssize_t i = 0; i < 256; i++) { - if (unicode == state->latin1[i]) { + PyASCIIObject *ascii = (PyASCIIObject *)unicode; + if (ascii->state.kind != PyUnicode_WCHAR_KIND && ascii->length == 1) { + Py_UCS4 ch = PyUnicode_READ_CHAR(unicode, 0); + if (ch < 256 && state->latin1[ch] == unicode) { return 1; } }