]> granicus.if.org Git - python/commitdiff
and back to the "magic" formula (with a comment) it is
authorBenjamin Peterson <benjamin@python.org>
Wed, 23 Nov 2011 16:44:52 +0000 (10:44 -0600)
committerBenjamin Peterson <benjamin@python.org>
Wed, 23 Nov 2011 16:44:52 +0000 (10:44 -0600)
Objects/unicodeobject.c

index ab59e215491267c7827391bbc3a2c440383098f4..2fefdbe17098b09f37bfaeeae823afc318e21c5e 100644 (file)
@@ -6164,21 +6164,9 @@ PyUnicode_AsRawUnicodeEscapeString(PyObject *unicode)
     kind = PyUnicode_KIND(unicode);
     data = PyUnicode_DATA(unicode);
     len = PyUnicode_GET_LENGTH(unicode);
-    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;
-    }
+    /* 4 byte characters can take up 10 bytes, 2 byte characters can take up 6
+       bytes, and 1 byte characters 4. */
+    expandsize = kind * 2 + 2;
 
     if (len > PY_SSIZE_T_MAX / expandsize)
         return PyErr_NoMemory();