LargeInteger.st
changeset 4255 73212f63b6a6
parent 4254 3846b94301b8
child 4256 04905f1fa63f
--- 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 $'
 ! !