From 8620be99da930230b18ec05f4d7446ee403531af Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 22 Sep 2021 12:16:53 +0200 Subject: [PATCH] bpo-45061: Revert unicode_is_singleton() change (GH-28516) Don't use a loop over 256 items, only checks for a single singleton. --- Objects/unicodeobject.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index f5919cf5a95..02bf56e681e 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; } }