[Python-checkins] python/dist/src/Modules _heapqmodule.c,1.3,1.4

rhettinger at users.sourceforge.net rhettinger at users.sourceforge.net
Sun Jun 13 11:37:13 EDT 2004


Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10613
Modified Files:
	_heapqmodule.c 
Log Message:
Fixup error exits in nlargest() and nsmallest().
Index: _heapqmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/_heapqmodule.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** _heapqmodule.c	13 Jun 2004 05:26:33 -0000	1.3
--- _heapqmodule.c	13 Jun 2004 15:36:56 -0000	1.4
***************
*** 231,241 ****
 
 	heap = PyList_New(0);
! 	if (it == NULL)
 		goto fail;
 
 	for (i=0 ; i<n ; i++ ){
 		elem = PyIter_Next(it);
! 		if (elem == NULL)
! 			goto sortit;
 		if (PyList_Append(heap, elem) == -1) {
 			Py_DECREF(elem);
--- 231,245 ----
 
 	heap = PyList_New(0);
! 	if (heap == NULL)
 		goto fail;
 
 	for (i=0 ; i<n ; i++ ){
 		elem = PyIter_Next(it);
! 		if (elem == NULL) {
! 			if (PyErr_Occurred())
! 				goto fail;
! 			else
! 				goto sortit;
! 		}
 		if (PyList_Append(heap, elem) == -1) {
 			Py_DECREF(elem);
***************
*** 272,280 ****
 	}
 sortit:
- 	Py_DECREF(it);
 	if (PyList_Sort(heap) == -1)
 		goto fail;
 	if (PyList_Reverse(heap) == -1)
 		goto fail;
 	return heap;
 
--- 276,284 ----
 	}
 sortit:
 	if (PyList_Sort(heap) == -1)
 		goto fail;
 	if (PyList_Reverse(heap) == -1)
 		goto fail;
+ 	Py_DECREF(it);
 	return heap;
 
***************
*** 386,396 ****
 
 	heap = PyList_New(0);
! 	if (it == NULL)
 		goto fail;
 
 	for (i=0 ; i<n ; i++ ){
 		elem = PyIter_Next(it);
! 		if (elem == NULL)
! 			goto sortit;
 		if (PyList_Append(heap, elem) == -1) {
 			Py_DECREF(elem);
--- 390,404 ----
 
 	heap = PyList_New(0);
! 	if (heap == NULL)
 		goto fail;
 
 	for (i=0 ; i<n ; i++ ){
 		elem = PyIter_Next(it);
! 		if (elem == NULL) {
! 			if (PyErr_Occurred())
! 				goto fail;
! 			else
! 				goto sortit;
! 		}
 		if (PyList_Append(heap, elem) == -1) {
 			Py_DECREF(elem);
***************
*** 430,436 ****
 
 sortit:
- 	Py_DECREF(it);
 	if (PyList_Sort(heap) == -1)
 		goto fail;
 	return heap;
 
--- 438,444 ----
 
 sortit:
 	if (PyList_Sort(heap) == -1)
 		goto fail;
+ 	Py_DECREF(it);
 	return heap;
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /