From: Guido van Rossum Date: Wed, 9 Jun 1999 15:19:34 +0000 (+0000) Subject: When deallocating a list, DECREF the items from the end back to the start. X-Git-Tag: v1.6a1~1261 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fa71701d46892fe80b1e95279e435533579b3ca7;p=python When deallocating a list, DECREF the items from the end back to the start. --- diff --git a/Objects/listobject.c b/Objects/listobject.c index 05da5dcc0f..0342cdcb38 100644 --- a/Objects/listobject.c +++ b/Objects/listobject.c @@ -216,7 +216,12 @@ list_dealloc(op) { int i; if (op->ob_item != NULL) { - for (i = 0; i < op->ob_size; i++) { + /* Do it backwards, for Christian Tismer. + There's a simple test case where somehow this reduces + thrashing when a *very* large list is created and + immediately deleted. */ + i = op->ob_size; + while (--i >= 0) { Py_XDECREF(op->ob_item[i]); } free((ANY *)op->ob_item);