diff --git a/src/lj_record.c b/src/lj_record.c index d0cad539..d8cd8962 100644 --- a/src/lj_record.c +++ b/src/lj_record.c @@ -1237,8 +1237,12 @@ static void LJ_FASTCALL recff_tonumber(jit_State *J, RecordFFData *rd) if (!tref_isk(base) || IR(tref_ref(base))->i != 10) recff_nyiu(J); } - if (tref_isstr(tr)) + if (tref_isstr(tr)) { + TValue tmp; + if (!lj_str_tonum(strV(&rd->argv[0]), &tmp)) + recff_nyiu(J); /* Would need an inverted STRTO for this case. */ tr = emitir(IRTG(IR_STRTO, IRT_NUM), tr, 0); + } } else { tr = TREF_NIL; }