diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2002-01-14 13:46:30 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2002-01-14 13:46:30 +0000 |
commit | 64ba6ab2456265e7b03fa9aa2751b55dafdc41ee (patch) | |
tree | a33ead5dc3f214c23ceedf745eca125e6f7a6b45 /Src/math.c | |
parent | 126d3b946863ac578ddcee45c0e29f4e7c810983 (diff) | |
download | zsh-64ba6ab2456265e7b03fa9aa2751b55dafdc41ee.tar.gz zsh-64ba6ab2456265e7b03fa9aa2751b55dafdc41ee.tar.xz zsh-64ba6ab2456265e7b03fa9aa2751b55dafdc41ee.zip |
16448: math assignment bug introduced by 15291, 15292
Diffstat (limited to 'Src/math.c')
-rw-r--r-- | Src/math.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/Src/math.c b/Src/math.c index 755026b6c..17796f244 100644 --- a/Src/math.c +++ b/Src/math.c @@ -497,7 +497,7 @@ pop(int noget) if (mv->val.type == MN_UNSET && !noget) mv->val = getnparam(mv->lval); sp--; - return mv->val; + return errflag ? zero_mnumber : mv->val; } /**/ @@ -630,6 +630,8 @@ op(int what) DPUTS(sp < 1, "BUG: math: not enough wallabies in outback."); b = pop(0); a = pop(what == EQ); + if (errflag) + return; if (tp & (OP_A2IO|OP_E2IO)) { /* coerce to integers */ @@ -856,6 +858,8 @@ op(int what) c = pop(0); b = pop(0); a = pop(0); + if (errflag) + return; /* b and c can stay different types in this case. */ push(((a.type & MN_FLOAT) ? a.u.d : a.u.l) ? b : c, NULL, 0); break; |