[Python-checkins] python/dist/src/Modules arraymodule.c,2.77,2.78
mwh@users.sourceforge.net
mwh@users.sourceforge.net
Mon, 29 Jul 2002 07:35:05 -0700
Update of /cvsroot/python/python/dist/src/Modules
In directory usw-pr-cvs1:/tmp/cvs-serv18102/Modules
Modified Files:
arraymodule.c
Log Message:
Fix for
[ 587875 ] crash on deleting extended slice
The array code got simpler, always a good thing!
Index: arraymodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/arraymodule.c,v
retrieving revision 2.77
retrieving revision 2.78
diff -C2 -d -r2.77 -r2.78
*** arraymodule.c 17 Jul 2002 16:49:03 -0000 2.77
--- arraymodule.c 29 Jul 2002 14:35:03 -0000 2.78
***************
*** 1565,1569 ****
if (value == NULL) {
/* delete slice */
! int cur, i;
if (slicelength <= 0)
--- 1565,1569 ----
if (value == NULL) {
/* delete slice */
! int cur, i, extra;
if (slicelength <= 0)
***************
*** 1576,1580 ****
}
! for (cur = start, i = 0; cur < stop;
cur += step, i++) {
memmove(self->ob_item + (cur - i)*itemsize,
--- 1576,1580 ----
}
! for (cur = start, i = 0; i < slicelength - 1;
cur += step, i++) {
memmove(self->ob_item + (cur - i)*itemsize,
***************
*** 1582,1589 ****
(step - 1) * itemsize);
}
! if (self->ob_size > (start + slicelength*step)) {
! memmove(self->ob_item + (start + slicelength*(step - 1))*itemsize,
! self->ob_item + (start + slicelength*step)*itemsize,
! (self->ob_size - (start + slicelength*step))*itemsize);
}
--- 1582,1590 ----
(step - 1) * itemsize);
}
! extra = self->ob_size - (cur + 1);
! if (extra > 0) {
! memmove(self->ob_item + (cur - i)*itemsize,
! self->ob_item + (cur + 1)*itemsize,
! extra*itemsize);
}