jump address error when value taken from if statement without else clause; close #712

This commit is contained in:
Yukihiro Matz Matsumoto
2013-01-10 01:06:51 +09:00
parent eab894e5be
commit f134e8e1bf
+9 -3
View File
@@ -1106,18 +1106,24 @@ codegen(codegen_scope *s, node *tree, int val)
if (e) {
if (val) pop();
pos2 = new_label(s);
genop(s, MKOP_sBx(OP_JMP, 0));
dispatch(s, pos1);
genop(s, MKOP_sBx(OP_JMP, 0));
dispatch(s, pos1);
codegen(s, e, val);
dispatch(s, pos2);
}
else {
if (val) {
pop();
pos2 = new_label(s);
genop(s, MKOP_sBx(OP_JMP, 0));
dispatch(s, pos1);
genop(s, MKOP_A(OP_LOADNIL, cursp()));
dispatch(s, pos2);
push();
}
dispatch(s, pos1);
else {
dispatch(s, pos1);
}
}
}
break;