diff options
author | Mike Pall <mike> | 2022-05-20 11:54:20 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2022-05-20 11:54:20 +0200 |
commit | 80bb1428aad72d870af9969c30c9c39b174b5a59 (patch) | |
tree | 4a58fa86f02792a2a20e9aaac3d370a05c9e9dec /src/lj_record.c | |
parent | 91bc6b8ad1f373c1ce9003dc024b2e21fad0e444 (diff) | |
download | luajit-80bb1428aad72d870af9969c30c9c39b174b5a59.tar.gz luajit-80bb1428aad72d870af9969c30c9c39b174b5a59.tar.bz2 luajit-80bb1428aad72d870af9969c30c9c39b174b5a59.zip |
Fix loop initialization in table.foreach().
Reported by Daniel Steinberg.
Diffstat (limited to 'src/lj_record.c')
-rw-r--r-- | src/lj_record.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/lj_record.c b/src/lj_record.c index b92db957..533f4995 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
@@ -2233,6 +2233,7 @@ void lj_record_ins(jit_State *J) | |||
2233 | case BCMpri: setpriV(rcv, ~rc); ix.key = rc = TREF_PRI(IRT_NIL+rc); break; | 2233 | case BCMpri: setpriV(rcv, ~rc); ix.key = rc = TREF_PRI(IRT_NIL+rc); break; |
2234 | case BCMnum: { cTValue *tv = proto_knumtv(J->pt, rc); | 2234 | case BCMnum: { cTValue *tv = proto_knumtv(J->pt, rc); |
2235 | copyTV(J->L, rcv, tv); ix.key = rc = tvisint(tv) ? lj_ir_kint(J, intV(tv)) : | 2235 | copyTV(J->L, rcv, tv); ix.key = rc = tvisint(tv) ? lj_ir_kint(J, intV(tv)) : |
2236 | tv->u32.hi == LJ_KEYINDEX ? (lj_ir_kint(J, 0) | TREF_KEYINDEX) : | ||
2236 | lj_ir_knumint(J, numV(tv)); } break; | 2237 | lj_ir_knumint(J, numV(tv)); } break; |
2237 | case BCMstr: { GCstr *s = gco2str(proto_kgc(J->pt, ~(ptrdiff_t)rc)); | 2238 | case BCMstr: { GCstr *s = gco2str(proto_kgc(J->pt, ~(ptrdiff_t)rc)); |
2238 | setstrV(J->L, rcv, s); ix.key = rc = lj_ir_kstr(J, s); } break; | 2239 | setstrV(J->L, rcv, s); ix.key = rc = lj_ir_kstr(J, s); } break; |