From 45a7e5073ce0a59465fef0b80bb08bd4e76b7979 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Sun, 8 Dec 2019 19:51:33 +0100 Subject: [PATCH] Fix tonumber("-0"). Reported by bluecheetah001. --- src/lj_strscan.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/lj_strscan.c b/src/lj_strscan.c index f1e34a3d..1ae68c3f 100644 --- a/src/lj_strscan.c +++ b/src/lj_strscan.c @@ -445,12 +445,11 @@ StrScanFmt lj_strscan_scan(const uint8_t *p, TValue *o, uint32_t opt) /* Fast path for decimal 32 bit integers. */ if (fmt == STRSCAN_INT && base == 10 && (dig < 10 || (dig == 10 && *sp <= '2' && x < 0x80000000u+neg))) { - int32_t y = neg ? -(int32_t)x : (int32_t)x; if ((opt & STRSCAN_OPT_TONUM)) { - o->n = (double)y; + o->n = neg ? -(double)x : (double)x; return STRSCAN_NUM; } else { - o->i = y; + o->i = neg ? -(int32_t)x : (int32_t)x; return STRSCAN_INT; } }