diff options
Diffstat (limited to 'miscutils')
-rw-r--r-- | miscutils/bc.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c index ea200eb..07793e9 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c @@ -1676,6 +1676,10 @@ static BcStatus bc_num_k(BcNum *restrict a, BcNum *restrict b, c->num[i + j] += (BcDig) carry; len = BC_MAX(len, i + j + !!carry); + + // a=2^1000000 + // a*a <- without check below, this will not be interruptible + if (G_interrupt) return BC_STATUS_FAILURE; } c->len = len; @@ -1935,11 +1939,11 @@ static BcStatus bc_num_p(BcNum *a, BcNum *b, BcNum *restrict c, size_t scale) powrdx <<= 1; s = bc_num_mul(©, ©, ©, powrdx); if (s) goto err; - // It is too slow to handle ^C only after entire "2^1000000" completes - if (G_interrupt) { - s = BC_STATUS_FAILURE; - goto err; - } + // Not needed: bc_num_mul() has a check for ^C: + //if (G_interrupt) { + // s = BC_STATUS_FAILURE; + // goto err; + //} } bc_num_copy(c, ©); @@ -1955,11 +1959,11 @@ static BcStatus bc_num_p(BcNum *a, BcNum *b, BcNum *restrict c, size_t scale) s = bc_num_mul(c, ©, c, resrdx); if (s) goto err; } - // It is too slow to handle ^C only after entire "2^1000000" completes - if (G_interrupt) { - s = BC_STATUS_FAILURE; - goto err; - } + // Not needed: bc_num_mul() has a check for ^C: + //if (G_interrupt) { + // s = BC_STATUS_FAILURE; + // goto err; + //} } if (neg) { |