From: Mike Pall Date: Sun, 8 Dec 2019 18:51:33 +0000 (+0100) Subject: Fix tonumber("-0"). X-Git-Tag: v2.1.ROLLING~290^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45a7e5073ce0a59465fef0b80bb08bd4e76b7979;p=thirdparty%2FLuaJIT.git Fix tonumber("-0"). Reported by bluecheetah001. --- 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; } }