|
@@ -726,9 +726,13 @@ exception_restore:
|
|
|
if (type(t) == OT_CLOSURE
|
|
if (type(t) == OT_CLOSURE
|
|
|
&& (!_closure(t)->_function->_bgenerator)){
|
|
&& (!_closure(t)->_function->_bgenerator)){
|
|
|
SQObjectPtr clo = t;
|
|
SQObjectPtr clo = t;
|
|
|
|
|
+ SQInteger last_top = _top;
|
|
|
if(_openouters) CloseOuters(&(_stack._vals[_stackbase]));
|
|
if(_openouters) CloseOuters(&(_stack._vals[_stackbase]));
|
|
|
for (SQInteger i = 0; i < arg3; i++) STK(i) = STK(arg2 + i);
|
|
for (SQInteger i = 0; i < arg3; i++) STK(i) = STK(arg2 + i);
|
|
|
_GUARD(StartCall(_closure(clo), ci->_target, arg3, _stackbase, true));
|
|
_GUARD(StartCall(_closure(clo), ci->_target, arg3, _stackbase, true));
|
|
|
|
|
+ if (last_top >= _top) {
|
|
|
|
|
+ _top = last_top;
|
|
|
|
|
+ }
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|