Fix Goto/GosubExpr
This commit is contained in:
@@ -837,12 +837,20 @@ class GotoExpr : Code
|
|||||||
vm.pop(label);
|
vm.pop(label);
|
||||||
if(label.isString)
|
if(label.isString)
|
||||||
{
|
{
|
||||||
|
int pc;
|
||||||
if (sc && sc.func)
|
if (sc && sc.func)
|
||||||
{
|
{
|
||||||
vm.pc = sc.func.label[label.castString] - 1;
|
pc = sc.func.label.get(label.castString, int.min);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
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
|
else
|
||||||
{
|
{
|
||||||
@@ -896,13 +904,21 @@ class GosubExpr : Code
|
|||||||
vm.pop(label);
|
vm.pop(label);
|
||||||
if(label.isString)
|
if(label.isString)
|
||||||
{
|
{
|
||||||
vm.pushpc;//vm.push(Value(vm.pc));
|
vm.pushpc;
|
||||||
|
int pc;
|
||||||
if (sc && sc.func)
|
if (sc && sc.func)
|
||||||
{
|
{
|
||||||
vm.pc = sc.func.label[label.castString] - 1;
|
pc = sc.func.label.get(label.castString, int.min);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
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
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user