]> granicus.if.org Git - python/commitdiff
cave to those who like readable code
authorBenjamin Peterson <benjamin@python.org>
Wed, 23 Nov 2011 01:05:49 +0000 (19:05 -0600)
committerBenjamin Peterson <benjamin@python.org>
Wed, 23 Nov 2011 01:05:49 +0000 (19:05 -0600)
Objects/unicodeobject.c

index a7d9e1224c18bf80f79b22f9fdc8bab7bd240100..ab59e215491267c7827391bbc3a2c440383098f4 100644 (file)
@@ -6164,7 +6164,21 @@ PyUnicode_AsRawUnicodeEscapeString(PyObject *unicode)
     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();