[Python-checkins] python/dist/src/Modules arraymodule.c, 2.90,
2.90.8.1
rhettinger at users.sourceforge.net
rhettinger at users.sourceforge.net
Wed Aug 6 00:52:51 EDT 2003
Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1:/tmp/cvs-serv23103
Modified Files:
Tag: release23-maint
arraymodule.c
Log Message:
Backport SF bug #782369: Massive memory leak in array module
Fixed leak caused by switching from PyList_GetItem to PySequence_GetItem.
Added missing NULL check.
Clarified code by converting an "if" to an "else if".
Index: arraymodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/arraymodule.c,v
retrieving revision 2.90
retrieving revision 2.90.8.1
diff -C2 -d -r2.90 -r2.90.8.1
*** arraymodule.c 23 May 2003 10:01:07 -0000 2.90
--- arraymodule.c 6 Aug 2003 06:52:49 -0000 2.90.8.1
***************
*** 1759,1769 ****
PyObject *v =
PySequence_GetItem(initial, i);
if (setarrayitem(a, i, v) != 0) {
Py_DECREF(a);
return NULL;
}
}
! }
! if (initial != NULL && PyString_Check(initial)) {
PyObject *t_initial = Py_BuildValue("(O)",
initial);
--- 1759,1774 ----
PyObject *v =
PySequence_GetItem(initial, i);
+ if (v == NULL) {
+ Py_DECREF(a);
+ return NULL;
+ }
if (setarrayitem(a, i, v) != 0) {
+ Py_DECREF(v);
Py_DECREF(a);
return NULL;
}
+ Py_DECREF(v);
}
! } else if (initial != NULL && PyString_Check(initial)) {
PyObject *t_initial = Py_BuildValue("(O)",
initial);
More information about the Python-checkins
mailing list