[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