diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_parse.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lj_parse.c b/src/lj_parse.c index 91282768..ca12ae6b 100644 --- a/src/lj_parse.c +++ b/src/lj_parse.c | |||
@@ -687,10 +687,12 @@ static BCPos bcemit_jmp(FuncState *fs) | |||
687 | BCPos j = fs->pc - 1; | 687 | BCPos j = fs->pc - 1; |
688 | BCIns *ip = &fs->bcbase[j].ins; | 688 | BCIns *ip = &fs->bcbase[j].ins; |
689 | fs->jpc = NO_JMP; | 689 | fs->jpc = NO_JMP; |
690 | if ((int32_t)j >= (int32_t)fs->lasttarget && bc_op(*ip) == BC_UCLO) | 690 | if ((int32_t)j >= (int32_t)fs->lasttarget && bc_op(*ip) == BC_UCLO) { |
691 | setbc_j(ip, NO_JMP); | 691 | setbc_j(ip, NO_JMP); |
692 | else | 692 | fs->lasttarget = j+1; |
693 | } else { | ||
693 | j = bcemit_AJ(fs, BC_JMP, fs->freereg, NO_JMP); | 694 | j = bcemit_AJ(fs, BC_JMP, fs->freereg, NO_JMP); |
695 | } | ||
694 | jmp_append(fs, &j, jpc); | 696 | jmp_append(fs, &j, jpc); |
695 | return j; | 697 | return j; |
696 | } | 698 | } |