fix: flt_status was not always set properly
authorceriel <none@none>
Tue, 19 Dec 1989 09:27:16 +0000 (09:27 +0000)
committerceriel <none@none>
Tue, 19 Dec 1989 09:27:16 +0000 (09:27 +0000)
modules/src/flt_arith/flt_str2fl.c

index eeafce8..61c205e 100644 (file)
@@ -200,20 +200,22 @@ add_exponent(e, exp)
        int neg = exp < 0;
        int divsz, modsz;
        flt_arith x;
-       int     status;
+       register int status = 0;
 
        if (neg) exp = -exp;
        divsz = exp / SMALLSZ;
        modsz = exp % SMALLSZ;
+       if (!status) status = flt_status;
        flt_mul(e, (neg ? r_10pow : s10pow) + modsz, &x);
-       if (flt_status) status = flt_status;
+       if (!status) status = flt_status;
        while (divsz >= BIGSZ) {
                flt_mul(&x, neg ? &r_big_10pow[BIGSZ-1] : &big_10pow[BIGSZ-1],&x);
-               if (flt_status) status = flt_status;
+               if (!status) status = flt_status;
                divsz -= BIGSZ-1;
        }
        flt_mul(&x, (neg ? r_big_10pow : big_10pow) + divsz, e);
-       if (flt_status) status = flt_status;
+       if (!status) status = flt_status;
+       flt_status = status;
 }
 
 flt_str2flt(s, e)