diff --git a/src/lj_asm.c b/src/lj_asm.c index cc788407..5968c5e3 100644 --- a/src/lj_asm.c +++ b/src/lj_asm.c @@ -1022,13 +1022,13 @@ static void asm_snap_prep(ASMState *as) static void asm_snap_prev(ASMState *as) { if (as->curins < as->snapref) { - ptrdiff_t ofs = as->mctoporig - as->mcp; + uintptr_t ofs = (uintptr_t)(as->mctoporig - as->mcp); if (ofs >= 0x10000) lj_trace_err(as->J, LJ_TRERR_MCODEOV); do { if (as->snapno == 0) return; as->snapno--; as->snapref = as->T->snap[as->snapno].ref; - as->T->snap[as->snapno].mcofs = ofs; /* Remember mcode offset. */ + as->T->snap[as->snapno].mcofs = (uint16_t)ofs; /* Remember mcode ofs. */ } while (as->curins < as->snapref); /* May have no ins inbetween. */ as->snapalloc = 1; }