mirror of
https://github.com/python/cpython.git
synced 2025-08-31 22:18:28 +00:00
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.
This commit is contained in:
parent
b248b7f848
commit
bea47e768d
1 changed files with 4 additions and 3 deletions
|
@ -213,9 +213,8 @@ PyUnicodeObject *_PyUnicode_New(int length)
|
||||||
/* Unicode freelist & memory allocation */
|
/* Unicode freelist & memory allocation */
|
||||||
if (unicode_freelist) {
|
if (unicode_freelist) {
|
||||||
unicode = unicode_freelist;
|
unicode = unicode_freelist;
|
||||||
unicode_freelist = *(PyUnicodeObject **)unicode_freelist;
|
unicode_freelist = *(PyUnicodeObject **)unicode;
|
||||||
unicode_freelist_size--;
|
unicode_freelist_size--;
|
||||||
PyObject_INIT(unicode, &PyUnicode_Type);
|
|
||||||
if (unicode->str) {
|
if (unicode->str) {
|
||||||
/* Keep-Alive optimization: we only upsize the buffer,
|
/* Keep-Alive optimization: we only upsize the buffer,
|
||||||
never downsize it. */
|
never downsize it. */
|
||||||
|
@ -225,8 +224,10 @@ PyUnicodeObject *_PyUnicode_New(int length)
|
||||||
goto onError;
|
goto onError;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
unicode->str = PyMem_NEW(Py_UNICODE, length + 1);
|
unicode->str = PyMem_NEW(Py_UNICODE, length + 1);
|
||||||
|
}
|
||||||
|
PyObject_INIT(unicode, &PyUnicode_Type);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
unicode = PyObject_NEW(PyUnicodeObject, &PyUnicode_Type);
|
unicode = PyObject_NEW(PyUnicodeObject, &PyUnicode_Type);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue