From 24dd6fcd97da2f322f31876de0126334722148d3 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Wed, 18 Dec 2002 16:56:26 +0000 Subject: 18013: Handle test of (( float == 0.0)) properly --- Src/builtin.c | 7 ++++--- Src/exec.c | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'Src') diff --git a/Src/builtin.c b/Src/builtin.c index cb7c82052..b175bcae9 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -4097,13 +4097,14 @@ bin_ttyctl(char *name, char **argv, char *ops, int func) int bin_let(char *name, char **argv, char *ops, int func) { - zlong val = 0; + mnumber val = zero_mnumber; while (*argv) - val = mathevali(*argv++); + val = matheval(*argv++); /* Errors in math evaluation in let are non-fatal. */ errflag = 0; - return !val; + /* should test for fabs(val.u.d) < epsilon? */ + return (val.type == MN_INTEGER) ? val.u.l == 0 : val.u.d == 0.0; } /* umask command. umask may be specified as octal digits, or in the * diff --git a/Src/exec.c b/Src/exec.c index 4ed4f0671..fec58c511 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -3054,7 +3054,7 @@ static int execarith(Estate state, int do_exec) { char *e; - zlong val = 0; + mnumber val = zero_mnumber; int htok = 0; if (isset(XTRACE)) { @@ -3068,7 +3068,7 @@ execarith(Estate state, int do_exec) if (isset(XTRACE)) fprintf(xtrerr, " %s", e); - val = mathevali(e); + val = matheval(e); cmdpop(); @@ -3077,7 +3077,8 @@ execarith(Estate state, int do_exec) fflush(xtrerr); } errflag = 0; - return !val; + /* should test for fabs(val.u.d) < epsilon? */ + return (val.type == MN_INTEGER) ? val.u.l == 0 : val.u.d == 0.0; } /* perform time ... command */ -- cgit 1.4.1