From: Denys Vlasenko Date: Wed, 5 Dec 2018 00:21:59 +0000 (+0100) Subject: bc: make 2^1000000 interruptible faster X-Git-Tag: 1_30_0~306 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=f359e004b0ce4a5ac361f553c13e876123fd4ebb;p=oweals%2Fbusybox.git bc: make 2^1000000 interruptible faster Signed-off-by: Denys Vlasenko --- diff --git a/miscutils/bc.c b/miscutils/bc.c index 866fa3027..b392b05a3 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c @@ -2039,6 +2039,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; + } } bc_num_copy(c, ©); @@ -2054,6 +2059,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; + } } if (neg) {