mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 23:24:09 +00:00
Fix potential hang in UCLO redirection handling in hooks.
This commit is contained in:
parent
c56d791316
commit
4f19a15bd9
@ -333,15 +333,13 @@ static void callhook(lua_State *L, int event, BCLine line)
|
||||
static BCReg cur_topslot(GCproto *pt, const BCIns *pc, uint32_t nres)
|
||||
{
|
||||
BCIns ins = pc[-1];
|
||||
for (;;) {
|
||||
switch (bc_op(ins)) {
|
||||
case BC_UCLO: ins = pc[bc_j(ins)]; break;
|
||||
case BC_CALLM:
|
||||
case BC_CALLMT: return bc_a(ins) + bc_c(ins) + nres-1+1;
|
||||
case BC_RETM: return bc_a(ins) + bc_d(ins) + nres-1;
|
||||
case BC_TSETM: return bc_a(ins) + nres-1;
|
||||
default: return pt->framesize;
|
||||
}
|
||||
if (bc_op(ins) == BC_UCLO)
|
||||
ins = pc[bc_j(ins)];
|
||||
switch (bc_op(ins)) {
|
||||
case BC_CALLM: case BC_CALLMT: return bc_a(ins) + bc_c(ins) + nres-1+1;
|
||||
case BC_RETM: return bc_a(ins) + bc_d(ins) + nres-1;
|
||||
case BC_TSETM: return bc_a(ins) + nres-1;
|
||||
default: return pt->framesize;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user