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_record.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_record.c')
-rw-r--r-- | src/lj_record.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lj_record.c b/src/lj_record.c index 9b51c51f..ff7825ee 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
@@ -1884,14 +1884,14 @@ void lj_record_ins(jit_State *J) | |||
1884 | case BC_MODVN: case BC_MODVV: | 1884 | case BC_MODVN: case BC_MODVV: |
1885 | recmod: | 1885 | recmod: |
1886 | if (tref_isnumber_str(rb) && tref_isnumber_str(rc)) | 1886 | if (tref_isnumber_str(rb) && tref_isnumber_str(rc)) |
1887 | rc = lj_opt_narrow_mod(J, rb, rc, rcv); | 1887 | rc = lj_opt_narrow_mod(J, rb, rc, rbv, rcv); |
1888 | else | 1888 | else |
1889 | rc = rec_mm_arith(J, &ix, MM_mod); | 1889 | rc = rec_mm_arith(J, &ix, MM_mod); |
1890 | break; | 1890 | break; |
1891 | 1891 | ||
1892 | case BC_POW: | 1892 | case BC_POW: |
1893 | if (tref_isnumber_str(rb) && tref_isnumber_str(rc)) | 1893 | if (tref_isnumber_str(rb) && tref_isnumber_str(rc)) |
1894 | rc = lj_opt_narrow_pow(J, lj_ir_tonum(J, rb), rc, rcv); | 1894 | rc = lj_opt_narrow_pow(J, rb, rc, rbv, rcv); |
1895 | else | 1895 | else |
1896 | rc = rec_mm_arith(J, &ix, MM_pow); | 1896 | rc = rec_mm_arith(J, &ix, MM_pow); |
1897 | break; | 1897 | break; |