From: Phil Pennock Date: Tue, 12 Apr 2011 20:26:44 +0000 (-0400) Subject: Also ${eval:x % 0} fixed to not SIGFPE. X-Git-Tag: exim-4_76_RC1~4 X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=a5b5269546e02d1f2e90000e79df8409d4f269db;p=exim.git Also ${eval:x % 0} fixed to not SIGFPE. Pointed out by: Steven A. Reisman --- 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;