diff options
author | Mike Pall <mike> | 2016-04-21 17:00:58 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2016-04-21 17:00:58 +0200 |
commit | 2f0001fad05731ea3787b27cf9b19e5293c358b8 (patch) | |
tree | cbfbb921518399867b24b0d82bf2ccc7fc111bf7 /src/lj_ffrecord.c | |
parent | cc4f5d056ab93521451631f28501015f054d8976 (diff) | |
download | luajit-2f0001fad05731ea3787b27cf9b19e5293c358b8.tar.gz luajit-2f0001fad05731ea3787b27cf9b19e5293c358b8.tar.bz2 luajit-2f0001fad05731ea3787b27cf9b19e5293c358b8.zip |
Fix handling of non-numeric strings in arithmetic coercions.
Thanks to Vyacheslav Egorov.
Diffstat (limited to 'src/lj_ffrecord.c')
-rw-r--r-- | src/lj_ffrecord.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/lj_ffrecord.c b/src/lj_ffrecord.c index c258aee1..99d54233 100644 --- a/src/lj_ffrecord.c +++ b/src/lj_ffrecord.c | |||
@@ -539,10 +539,8 @@ static void LJ_FASTCALL recff_math_degrad(jit_State *J, RecordFFData *rd) | |||
539 | 539 | ||
540 | static void LJ_FASTCALL recff_math_pow(jit_State *J, RecordFFData *rd) | 540 | static void LJ_FASTCALL recff_math_pow(jit_State *J, RecordFFData *rd) |
541 | { | 541 | { |
542 | TRef tr = lj_ir_tonum(J, J->base[0]); | 542 | J->base[0] = lj_opt_narrow_pow(J, J->base[0], J->base[1], |
543 | if (!tref_isnumber_str(J->base[1])) | 543 | &rd->argv[0], &rd->argv[1]); |
544 | lj_trace_err(J, LJ_TRERR_BADTYPE); | ||
545 | J->base[0] = lj_opt_narrow_pow(J, tr, J->base[1], &rd->argv[1]); | ||
546 | UNUSED(rd); | 544 | UNUSED(rd); |
547 | } | 545 | } |
548 | 546 | ||