]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Merge branch 'master' into v2.1
authorMike Pall <mike>
Wed, 3 Jul 2024 21:42:38 +0000 (23:42 +0200)
committerMike Pall <mike>
Wed, 3 Jul 2024 21:42:38 +0000 (23:42 +0200)
1  2 
src/lj_trace.c

diff --cc src/lj_trace.c
index a5e316e1a29c6c68d1bd2a84091abdfcbbdbcd64,8385f3d1e1845154273f2d1fb9cbcc271d4be9fd..f384cbdbc89d1a094591bffa949aef5e32edb2b5
@@@ -905,18 -788,17 +905,20 @@@ int LJ_FASTCALL lj_trace_exit(jit_Stat
    exd.J = J;
    exd.exptr = exptr;
    errcode = lj_vm_cpcall(L, NULL, &exd, trace_exit_cp);
-   if (errcode)
+   if (errcode) {
+     setcframe_pc(cframe_raw(L->cframe), L);  /* Point to any valid memory. */
      return -errcode;  /* Return negated error code. */
+   }
  
 -  lj_vmevent_send(L, TEXIT,
 -    lj_state_checkstack(L, 4+RID_NUM_GPR+RID_NUM_FPR+LUA_MINSTACK);
 -    setintV(L->top++, J->parent);
 -    setintV(L->top++, J->exitno);
 -    trace_exit_regs(L, ex);
 -  );
 +  if (exitcode) copyTV(L, L->top++, &exiterr);  /* Anchor the error object. */
 +
 +  if (!(LJ_HASPROFILE && (G(L)->hookmask & HOOK_PROFILE)))
 +    lj_vmevent_send(L, TEXIT,
 +      lj_state_checkstack(L, 4+RID_NUM_GPR+RID_NUM_FPR+LUA_MINSTACK);
 +      setintV(L->top++, J->parent);
 +      setintV(L->top++, J->exitno);
 +      trace_exit_regs(L, ex);
 +    );
  
    pc = exd.pc;
    cf = cframe_raw(L->cframe);