[git commit] bc: make 2^1000000 interruptible faster

Denys Vlasenko vda.linux at googlemail.com
Wed Dec 5 14:43:35 UTC 2018


commit: https://git.busybox.net/busybox/commit/?id=f359e004b0ce4a5ac361f553c13e876123fd4ebb
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 miscutils/bc.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

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(&copy, &copy, &copy, 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, &copy);
@@ -2054,6 +2059,11 @@ static BcStatus bc_num_p(BcNum *a, BcNum *b, BcNum *restrict c, size_t scale)
 			s = bc_num_mul(c, &copy, 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) {


More information about the busybox-cvs mailing list