From 225b35c9070f94cf79c90c33ffcee84b281f894d Mon Sep 17 00:00:00 2001
From: Peter Stephenson
Date: Wed, 8 Aug 2018 17:11:54 +0100
Subject: 43261: Fix unary minus with base.
Apply unary minus to a complete lexical constant rather than the
first component that comes along.
---
Src/math.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
(limited to 'Src')
diff --git a/Src/math.c b/Src/math.c
index 4b7ecf0ab..b08e05cb4 100644
--- a/Src/math.c
+++ b/Src/math.c
@@ -640,8 +640,19 @@ zzlex(void)
}
if (unary) {
if (idigit(*ptr) || *ptr == '.') {
- ptr--;
- return lexconstant();
+ int ctype = lexconstant();
+ if (ctype == NUM)
+ {
+ if (yyval.type == MN_FLOAT)
+ {
+ yyval.u.d = -yyval.u.d;
+ }
+ else
+ {
+ yyval.u.l = -yyval.u.l;
+ }
+ }
+ return ctype;
} else
return UMINUS;
} else
--
cgit 1.4.1