summaryrefslogtreecommitdiff
path: root/src/cmd/gc/mparith2.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/gc/mparith2.c')
-rw-r--r--src/cmd/gc/mparith2.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/cmd/gc/mparith2.c b/src/cmd/gc/mparith2.c
index 9b2f664f7..5cf98c62c 100644
--- a/src/cmd/gc/mparith2.c
+++ b/src/cmd/gc/mparith2.c
@@ -300,13 +300,21 @@ mpmulfixfix(Mpint *a, Mpint *b)
for(i=0; i<na; i++) {
x = *a1++;
for(j=0; j<Mpscale; j++) {
- if(x & 1)
+ if(x & 1) {
+ if(s.ovf) {
+ q.ovf = 1;
+ goto out;
+ }
mpaddfixfix(&q, &s, 1);
+ if(q.ovf)
+ goto out;
+ }
mplsh(&s, 1);
x >>= 1;
}
}
+out:
q.neg = a->neg ^ b->neg;
mpmovefixfix(a, &q);
if(a->ovf)