|
@@ -1444,6 +1444,7 @@ func (r *Runtime) RunProgram(p *Program) (result Value, err error) {
|
|
recursive := len(vm.callStack) > 0
|
|
recursive := len(vm.callStack) > 0
|
|
defer func() {
|
|
defer func() {
|
|
if recursive {
|
|
if recursive {
|
|
|
|
+ vm.sp--
|
|
vm.popCtx()
|
|
vm.popCtx()
|
|
} else {
|
|
} else {
|
|
vm.callStack = vm.callStack[:len(vm.callStack)-1]
|
|
vm.callStack = vm.callStack[:len(vm.callStack)-1]
|
|
@@ -1462,7 +1463,8 @@ func (r *Runtime) RunProgram(p *Program) (result Value, err error) {
|
|
if recursive {
|
|
if recursive {
|
|
vm.pushCtx()
|
|
vm.pushCtx()
|
|
vm.stash = &r.global.stash
|
|
vm.stash = &r.global.stash
|
|
- vm.sb = vm.sp - 1
|
|
|
|
|
|
+ vm.push(_undefined) // make sure the 'callee' value (stack[sb-1]) is set
|
|
|
|
+ vm.sb = vm.sp
|
|
} else {
|
|
} else {
|
|
vm.callStack = append(vm.callStack, context{})
|
|
vm.callStack = append(vm.callStack, context{})
|
|
}
|
|
}
|