[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);
  			}