diff Modules/arraymodule.c @ 72475:8beaa9a37387

Implement PEP 393.
author Martin v. Löwis <martin@v.loewis.de>
date Wed, 28 Sep 2011 07:41:54 +0200
parents 3fb9464f9b02
children dacac31460c0
line wrap: on
line diff
--- a/Modules/arraymodule.c	Tue Sep 27 20:52:04 2011 -0500
+++ b/Modules/arraymodule.c	Wed Sep 28 07:41:54 2011 +0200
@@ -2810,9 +2810,9 @@
 PyInit_array(void)
 {
     PyObject *m;
+    char buffer[PY_ARRAY_LENGTH(descriptors)], *p;
     PyObject *typecodes;
     Py_ssize_t size = 0;
-    register Py_UNICODE *p;
     struct arraydescr *descr;
 
     if (PyType_Ready(&Arraytype) < 0)
@@ -2831,13 +2831,13 @@
         size++;
     }
 
-    typecodes = PyUnicode_FromStringAndSize(NULL, size);
-    p = PyUnicode_AS_UNICODE(typecodes);
+    p = buffer;
     for (descr = descriptors; descr->typecode != '\0'; descr++) {
         *p++ = (char)descr->typecode;
     }
+    typecodes = PyUnicode_DecodeASCII(buffer, p - buffer, NULL);
 
-    PyModule_AddObject(m, "typecodes", (PyObject *)typecodes);
+    PyModule_AddObject(m, "typecodes", typecodes);
 
     if (PyErr_Occurred()) {
         Py_DECREF(m);