diff options
-rw-r--r-- | src/src/expand.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/src/expand.c b/src/src/expand.c index 06e0eb0ce..fece8c150 100644 --- a/src/src/expand.c +++ b/src/src/expand.c @@ -3106,18 +3106,21 @@ if (*error == NULL) int op = *s++; int y = eval_op_unary(&s, decimal, error); if (*error != NULL) break; - if (op == '*') x *= y; - else if (op == '/') + if (op == '*') + x *= y; + else + { + if (y == 0) { - if (y == 0) - { - *error = US"divide by zero"; - x = 0; - break; - } - x /= y; + *error = (op == '/') ? US"divide by zero" : US"modulo by zero"; + x = 0; + break; } - else x %= y; + if (op == '/') + x /= y; + else + x %= y; + } } } *sptr = s; |