python/dist/src/Include listobject.h,2.29,2.30

Update of /cvsroot/python/python/dist/src/Include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25814/Include Modified Files: listobject.h Log Message: Fix obscure breakage (relative to 2.3) in listsort: the test for list mutation during list.sort() used to rely on that listobject.c always NULL'ed ob_item when ob_size fell to 0. That's no longer true, so the test for list mutation during a sort is no longer reliable. Changed the test to rely instead on that listobject.c now never NULLs-out ob_item after (if ever) ob_item gets a non-NULL value. This new assumption is also documented now, as a required invariant in listobject.h. The new assumption allowed some real simplification to some of the hairier code in listsort(), so is a Good Thing on that count. Index: listobject.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Include/listobject.h,v retrieving revision 2.29 retrieving revision 2.30 diff -C2 -d -r2.29 -r2.30 *** listobject.h 29 Jul 2004 03:29:15 -0000 2.29 --- listobject.h 29 Jul 2004 04:07:14 -0000 2.30 *************** *** 31,34 **** --- 31,37 ---- * len(list) == ob_size * ob_item == NULL implies ob_size == allocated == 0 + * If ob_item ever becomes non-NULL, it remains non-NULL for the + * life of the list object. The check for mutation in list.sort() + * relies on this odd detail. */ int allocated;
participants (1)
-
tim_oneļ¼ users.sourceforge.net