]> granicus.if.org Git - python/commitdiff
Vladimir MARANGOZOV <Vladimir.Marangozov@inrialpes.fr>:
authorMarc-André Lemburg <mal@egenix.com>
Sat, 17 Jun 2000 20:31:17 +0000 (20:31 +0000)
committerMarc-André Lemburg <mal@egenix.com>
Sat, 17 Jun 2000 20:31:17 +0000 (20:31 +0000)
This patch fixes an optimisation mystery in _PyUnicodeNew causing segfaults
on AIX when the interpreter is compiled with -O.

Objects/unicodeobject.c

index bfc59dd97a1c0b28582b5e2c085bf5f459ea3c17..e6d2a1a5f9b94f22de4fde7c1c2c8ae06d81776c 100644 (file)
@@ -213,9 +213,8 @@ PyUnicodeObject *_PyUnicode_New(int length)
     /* Unicode freelist & memory allocation */
     if (unicode_freelist) {
         unicode = unicode_freelist;
-        unicode_freelist = *(PyUnicodeObject **)unicode_freelist;
+        unicode_freelist = *(PyUnicodeObject **)unicode;
         unicode_freelist_size--;
-       PyObject_INIT(unicode, &PyUnicode_Type);
        if (unicode->str) {
            /* Keep-Alive optimization: we only upsize the buffer,
               never downsize it. */
@@ -225,8 +224,10 @@ PyUnicodeObject *_PyUnicode_New(int length)
                goto onError;
            }
        }
-       else
+      else {
            unicode->str = PyMem_NEW(Py_UNICODE, length + 1);
+      }
+      PyObject_INIT(unicode, &PyUnicode_Type);
     }
     else {
         unicode = PyObject_NEW(PyUnicodeObject, &PyUnicode_Type);