cave to those who like readable code
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index a7d9e12..ab59e21 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -6164,7 +6164,21 @@
kind = PyUnicode_KIND(unicode);
data = PyUnicode_DATA(unicode);
len = PyUnicode_GET_LENGTH(unicode);
- expandsize = kind * 2 + 2;
+ expandsize = 0;
+ switch (kind) {
+ case PyUnicode_1BYTE_KIND:
+ expandsize = 4;
+ break;
+ case PyUnicode_2BYTE_KIND:
+ expandsize = 6;
+ break;
+ case PyUnicode_4BYTE_KIND:
+ expandsize = 10;
+ break;
+ default:
+ assert(0);
+ break;
+ }
if (len > PY_SSIZE_T_MAX / expandsize)
return PyErr_NoMemory();