From: Benjamin Peterson <benjamin@python.org> Date: Wed, 23 Nov 2011 16:44:52 +0000 (-0600) Subject: and back to the "magic" formula (with a comment) it is X-Git-Tag: v3.3.0a1~737 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1518e8713d1e372284c653f254fb29cecc66d764;p=python and back to the "magic" formula (with a comment) it is --- diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index ab59e21549..2fefdbe170 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -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();