Vladimir MARANGOZOV <Vladimir.Marangozov@inrialpes.fr>:
This patch fixes an optimisation mystery in _PyUnicodeNew causing segfaults
on AIX when the interpreter is compiled with -O.
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index bfc59dd..e6d2a1a 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -213,9 +213,8 @@
     /* 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 @@
 		goto onError;
 	    }
 	}
-	else
+      else {
 	    unicode->str = PyMem_NEW(Py_UNICODE, length + 1);
+      }
+      PyObject_INIT(unicode, &PyUnicode_Type);
     }
     else {
         unicode = PyObject_NEW(PyUnicodeObject, &PyUnicode_Type);