[git commit] dc: make 4 % 0 emit error messgaes and set result to 0
Denys Vlasenko
vda.linux at googlemail.com
Thu May 16 07:40:36 UTC 2019
commit: https://git.busybox.net/busybox/commit/?id=1113961dde21ce73c1543ca466913d9e17d06c1b
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master
function old new delta
mod 105 136 +31
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
miscutils/dc.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/miscutils/dc.c b/miscutils/dc.c
index 5119c1383..5aef64b60 100644
--- a/miscutils/dc.c
+++ b/miscutils/dc.c
@@ -94,13 +94,18 @@ static void mod(void)
{
data_t d = pop();
- //if (d == 0) {
- // bb_error_msg("remainder by zero");
- // pop();
- // push(0);
- // return;
- //}
- //^^^^ without this, we simply get SIGFPE and die
+ /* compat with dc (GNU bc 1.07.1) 1.4.1:
+ * $ dc -e '4 0 % p'
+ * dc: remainder by zero
+ * 0
+ */
+ if (d == 0) {
+ bb_error_msg("remainder by zero");
+ pop();
+ push(0);
+ return;
+ }
+ /* ^^^^ without this, we simply get SIGFPE and die */
push((data_t) pop() % d);
}
More information about the busybox-cvs
mailing list