From 2a00e1d4c02e1090b5d4f8e8af62e457eaba7ecb Mon Sep 17 00:00:00 2001 From: Ralph Campbell Date: Sat, 16 May 1992 18:01:52 -0800 Subject: [PATCH] check for divide by zero. SCCS-vsn: bin/expr/expr.y 5.2 --- usr/src/bin/expr/expr.y | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/usr/src/bin/expr/expr.y b/usr/src/bin/expr/expr.y index f9af96c727..2766cd7c82 100644 --- a/usr/src/bin/expr/expr.y +++ b/usr/src/bin/expr/expr.y @@ -66,7 +66,7 @@ char copyright[] = #endif /* not lint */ #ifndef lint -static char sccsid[] = "@(#)expr.y 5.1 (Berkeley) %G%"; +static char sccsid[] = "@(#)expr.y 5.2 (Berkeley) %G%"; #endif /* not lint */ #include @@ -145,8 +145,18 @@ char *arith(op, r1, r2) char *r1, *r2; { case ADD: i1 = i1 + i2; break; case SUBT: i1 = i1 - i2; break; case MULT: i1 = i1 * i2; break; - case DIV: i1 = i1 / i2; break; - case REM: i1 = i1 % i2; break; + case DIV: + if (i2 != 0) + i1 = i1 / i2; + else + yyerror("Divide by zero"); + break; + case REM: + if (i2 != 0) + i1 = i1 % i2; + else + yyerror("Remainder by zero"); + break; } rv = malloc(16); (void)sprintf(rv, "%ld", i1); -- 2.20.1