diff --git a/src/lj_parse.c b/src/lj_parse.c index 7ff7d728..882399c7 100644 --- a/src/lj_parse.c +++ b/src/lj_parse.c @@ -1555,7 +1555,9 @@ static void fs_fixup_ret(FuncState *fs) switch (bc_op(ins)) { case BC_CALLMT: case BC_CALLT: case BC_RETM: case BC_RET: case BC_RET0: case BC_RET1: - offset = bcemit_INS(fs, ins)-(pc+1)+BCBIAS_J; /* Copy return ins. */ + offset = bcemit_INS(fs, ins); /* Copy original instruction. */ + fs->bcbase[offset].line = fs->bcbase[pc].line; + offset = offset-(pc+1)+BCBIAS_J; if (offset > BCMAX_D) err_syntax(fs->ls, LJ_ERR_XFIXUP); /* Replace with UCLO plus branch. */