Ensure that 1-char singletons get used
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 75fc23c..3cc190e 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -1622,6 +1622,8 @@
assert(*p < 128);
}
#endif
+ if (size == 1)
+ return get_latin1_char(s[0]);
res = PyUnicode_New(size, 127);
if (!res)
return NULL;
@@ -1653,6 +1655,8 @@
Py_ssize_t i;
assert(size >= 0);
+ if (size == 1)
+ return get_latin1_char(u[0]);
for (i = 0; i < size; i++) {
if (u[i] & 0x80) {
max_char = 255;
@@ -1675,6 +1679,8 @@
Py_ssize_t i;
assert(size >= 0);
+ if (size == 1 && u[0] < 256)
+ return get_latin1_char(u[0]);
for (i = 0; i < size; i++) {
if (u[i] > max_char) {
max_char = u[i];
@@ -1702,6 +1708,8 @@
Py_ssize_t i;
assert(size >= 0);
+ if (size == 1 && u[0] < 256)
+ return get_latin1_char(u[0]);
for (i = 0; i < size; i++) {
if (u[i] > max_char) {
max_char = u[i];