|
|
|
@ -1460,7 +1460,7 @@ bool SQVM::DeleteSlot(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
res = t;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
Raise_Error("attempt to delete a slot from a %s",GetTypeName(self));
|
|
|
|
@ -1471,7 +1471,7 @@ bool SQVM::DeleteSlot(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr
|
|
|
|
|
|
|
|
|
|
bool SQVM::Call(SQObjectPtr &closure,SQInteger nparams,SQInteger stackbase,SQObjectPtr &outres,SQBool raiseerror,SQBool can_suspend)
|
|
|
|
|
{
|
|
|
|
|
#ifndef NDEBUG
|
|
|
|
|
#ifdef WITH_ASSERT
|
|
|
|
|
SQInteger prevstackbase = _stackbase;
|
|
|
|
|
#endif
|
|
|
|
|
switch(type(closure)) {
|
|
|
|
@ -1482,13 +1482,13 @@ bool SQVM::Call(SQObjectPtr &closure,SQInteger nparams,SQInteger stackbase,SQObj
|
|
|
|
|
bool ret = Execute(closure, _top - nparams, nparams, stackbase,outres,raiseerror);
|
|
|
|
|
this->_can_suspend = backup_suspend;
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case OT_NATIVECLOSURE:{
|
|
|
|
|
case OT_NATIVECLOSURE: {
|
|
|
|
|
bool suspend;
|
|
|
|
|
return CallNative(_nativeclosure(closure), nparams, stackbase, outres,suspend);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case OT_CLASS: {
|
|
|
|
|
SQObjectPtr constr;
|
|
|
|
@ -1499,12 +1499,12 @@ bool SQVM::Call(SQObjectPtr &closure,SQInteger nparams,SQInteger stackbase,SQObj
|
|
|
|
|
return Call(constr,nparams,stackbase,temp,raiseerror,false);
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
#ifndef NDEBUG
|
|
|
|
|
#ifdef WITH_ASSERT
|
|
|
|
|
if(!_suspended) {
|
|
|
|
|
assert(_stackbase == prevstackbase);
|
|
|
|
|
}
|
|
|
|
|