[Python-checkins] python/dist/src/Objects listobject.c,2.113,2.114
mwh@users.sourceforge.net
mwh@users.sourceforge.net
Wed, 19 Jun 2002 08:44:17 -0700
Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv17321/Objects
Modified Files:
listobject.c
Log Message:
Fix the bug described in
http://mail.python.org/pipermail/python-dev/2002-June/025461.html
with test cases.
Also includes extended slice support for arrays, which I thought I'd
already checked in but obviously not.
Index: listobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/listobject.c,v
retrieving revision 2.113
retrieving revision 2.114
diff -C2 -d -r2.113 -r2.114
*** listobject.c 14 Jun 2002 02:04:18 -0000 2.113
--- listobject.c 19 Jun 2002 15:44:15 -0000 2.114
***************
*** 1758,1764 ****
}
if (value == NULL) {
/* delete slice */
! PyObject **garbage, **item;
int cur, i, j;
--- 1758,1768 ----
}
+ /* treat L[slice(a,b)] = v _exactly_ like L[a:b] = v */
+ if (step == 1 && ((PySliceObject*)item)->step == Py_None)
+ return list_ass_slice(self, start, stop, value);
+
if (value == NULL) {
/* delete slice */
! PyObject **garbage, **it;
int cur, i, j;
***************
*** 1789,1793 ****
}
}
! for (cur = start + slicelength*step + 1;
cur < self->ob_size; cur++) {
PyList_SET_ITEM(self, cur - slicelength,
--- 1793,1797 ----
}
}
! for (cur = start + slicelength*step + 1;
cur < self->ob_size; cur++) {
PyList_SET_ITEM(self, cur - slicelength,
***************
*** 1795,1801 ****
}
self->ob_size -= slicelength;
! item = self->ob_item;
! NRESIZE(item, PyObject*, self->ob_size);
! self->ob_item = item;
for (i = 0; i < slicelength; i++) {
--- 1799,1805 ----
}
self->ob_size -= slicelength;
! it = self->ob_item;
! NRESIZE(it, PyObject*, self->ob_size);
! self->ob_item = it;
for (i = 0; i < slicelength; i++) {