python/dist/src/Objects listobject.c,2.165,2.166

Update of /cvsroot/python/python/dist/src/Objects In directory sc8-pr-cvs1:/tmp/cvs-serv3998/Objects Modified Files: listobject.c Log Message: Make sure the list.sort's decorate step unwinds itself before returning an exception raised by the key function. (Suggested by Michael Hudson.) Index: listobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/listobject.c,v retrieving revision 2.165 retrieving revision 2.166 diff -C2 -d -r2.165 -r2.166 *** listobject.c 8 Nov 2003 11:58:44 -0000 2.165 --- listobject.c 28 Nov 2003 21:43:02 -0000 2.166 *************** *** 1877,1882 **** key = PyObject_CallFunctionObjArgs(keyfunc, value, NULL); ! if (key == NULL) goto dsu_fail; kvpair = build_sortwrapper(key, value); if (kvpair == NULL) --- 1877,1889 ---- key = PyObject_CallFunctionObjArgs(keyfunc, value, NULL); ! if (key == NULL) { ! for (i=i-1 ; i>=0 ; i--) { ! kvpair = PyList_GET_ITEM(self, i); ! value = sortwrapper_getvalue(kvpair); ! PyList_SET_ITEM(self, i, value); ! Py_DECREF(kvpair); ! } goto dsu_fail; + } kvpair = build_sortwrapper(key, value); if (kvpair == NULL) *************** *** 1886,1890 **** } ! /* Reverse sort stability achieved by initialially reversing the list, applying a stable forward sort, then reversing the final result. */ if (reverse && self->ob_size > 1) --- 1893,1897 ---- } ! /* Reverse sort stability achieved by initially reversing the list, applying a stable forward sort, then reversing the final result. */ if (reverse && self->ob_size > 1)
participants (1)
-
rhettingerīŧ users.sourceforge.net