Fix Goto/GosubExpr

This commit is contained in:
otya128 committed 2016-12-07 20:12:58 +09:00
1 parent 92d5026c72
commit 6b2a065cb7
1 file changed
+23 -7
+23 -7
View File
@@ -837,12 +837,20 @@ class GotoExpr : Code
vm.pop(label);
if(label.isString)
{
int pc;
if (sc && sc.func)
{
vm.pc = sc.func.label[label.castString] - 1;
return;
pc = sc.func.label.get(label.castString, int.min);
}
vm.pc = vm.currentSlot.globalLabel[label.castString] - 1;
else
{
pc = vm.currentSlot.globalLabel.get(label.castString, int.min);
}
if (pc == int.min)
{
throw new UndefinedLabel();
}
vm.pc = pc - 1;
}
else
{
@@ -896,13 +904,21 @@ class GosubExpr : Code
vm.pop(label);
if(label.isString)
{
vm.pushpc;//vm.push(Value(vm.pc));
vm.pushpc;
int pc;
if (sc && sc.func)
{
vm.pc = sc.func.label[label.castString] - 1;
return;
pc = sc.func.label.get(label.castString, int.min);
}
vm.pc = vm.currentSlot.globalLabel[label.castString] - 1;
else
{
pc = vm.currentSlot.globalLabel.get(label.castString, int.min);
}
if (pc == int.min)
{
throw new UndefinedLabel();
}
vm.pc = pc - 1;
}
else
{