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();