diff --git a/src/lib_base.c b/src/lib_base.c index 8c1e98a6..eb604538 100644 --- a/src/lib_base.c +++ b/src/lib_base.c @@ -301,7 +301,7 @@ LJLIB_ASM(tonumber) LJLIB_REC(.) while (lj_char_isspace((unsigned char)(*ep))) ep++; if (*ep == '\0') { if (LJ_DUALNUM && LJ_LIKELY(ul < 0x80000000u+neg)) { - if (neg) ul = -ul; + if (neg) ul = (unsigned long)-(long)ul; setintV(L->base-1-LJ_FR2, (int32_t)ul); } else { lua_Number n = (lua_Number)ul;