mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 23:24:09 +00:00
Fix precondition check for NEWREF.
A check for nil value is not enough. Must check for ptr == niltv.
This commit is contained in:
parent
6038866f7d
commit
69df01efb2
@ -995,10 +995,10 @@ static TRef rec_idx(jit_State *J, RecordIndex *ix)
|
||||
cTValue *mo = lj_tab_getstr(mt, strref(J2G(J)->mmname[MM_newindex]));
|
||||
hasmm = mo && !tvisnil(mo);
|
||||
}
|
||||
if (hasmm || oldv == niltvg(J2G(J)))
|
||||
if (hasmm)
|
||||
emitir(IRTG(loadop, IRT_NIL), xref, 0); /* Guard for nil value. */
|
||||
else if (xrefop == IR_HREF)
|
||||
emitir(IRTG(IR_NE, IRT_PTR), xref, lj_ir_kptr(J, niltvg(J2G(J))));
|
||||
emitir(IRTG(oldv == niltvg(J2G(J)) ? IR_EQ : IR_NE, IRT_PTR), xref, lj_ir_kptr(J, niltvg(J2G(J))));
|
||||
if (ix->idxchain && rec_mm_lookup(J, ix, MM_newindex)) { /* Metamethod? */
|
||||
lua_assert(hasmm);
|
||||
goto handlemm;
|
||||
|
Loading…
Reference in New Issue
Block a user