From 6e6034e809a7c59a1cb95ee1d4eb54f09ae19015 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Tue, 9 Mar 2010 03:47:49 +0100 Subject: [PATCH] Avoid tracing the nil return case of tonumber(). --- src/lj_record.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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; }