[Python-checkins] python/dist/src/Modules arraymodule.c,2.77,2.78

mwh@users.sourceforge.net mwh@users.sourceforge.net
2002年7月29日 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);
 			}
 

AltStyle によって変換されたページ (->オリジナル) /