--- a/LargeInteger.st Wed Jun 02 14:56:46 1999 +0200
+++ b/LargeInteger.st Wed Jun 02 15:15:47 1999 +0200
@@ -2191,13 +2191,19 @@
((unsigned int *)(__src + __ptrDelta))[0] = __sum;
__src += 4;
+
if (__carry == 0) {
while (__src <= __srcLast4) {
- /* copy over */
+ /* copy over words */
((unsigned int *)(__src + __ptrDelta))[0] = ((unsigned int *)__src)[0];
__src += 4;
}
- break;
+ while (__src <= __srcLast) {
+ /* copy over bytes */
+ __src[__ptrDelta] = __src[0];
+ __src ++;
+ }
+ goto doneSource;
}
}
# else
@@ -2223,11 +2229,16 @@
__src += 4;
if (__carry == 0) {
while (__src <= __srcLast4) {
- /* copy over */
+ /* copy over words */
((unsigned int *)(__src + __ptrDelta))[0] = ((unsigned int *)__src)[0];
__src += 4;
}
- break;
+ while (__src <= __srcLast) {
+ /* copy over bytes */
+ __src[__ptrDelta] = __src[0];
+ __src ++;
+ }
+ goto doneSource;
}
}
# else
@@ -2245,11 +2256,16 @@
__carry = __sum >> 32;
if (__carry == 0) {
while (__src <= __srcLast4) {
- /* copy over */
+ /* copy over words */
((unsigned int *)(__src + __ptrDelta))[0] = ((unsigned int *)__src)[0];
__src += 4;
}
- break;
+ while (__src <= __srcLast) {
+ /* copy over bytes */
+ __src[__ptrDelta] = __src[0];
+ __src ++;
+ }
+ goto doneSource;
}
}
# endif /* alpha64 */
@@ -2280,6 +2296,7 @@
}
#endif /* __LSBFIRST */
+ doneSource: ;
__dst = __src + __ptrDelta;
while (__dst <= __dstLast) {
__dst[0] = __carry /* & 0xFF */;
@@ -3599,5 +3616,5 @@
!LargeInteger class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.113 1999-06-02 12:56:46 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.114 1999-06-02 13:15:47 cg Exp $'
! !