Merge pull request #112 from breakin/fix/sq_newmember_pop

sq_newmember and sq_rawnewmember argument popping
This commit is contained in:
Alberto Demichelis 2017-11-15 19:36:20 +08:00 committed by GitHub
commit 7fe2a71c13
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -947,8 +947,11 @@ SQRESULT sq_newmember(HSQUIRRELVM v,SQInteger idx,SQBool bstatic)
if(sq_type(self) != OT_CLASS) return sq_throwerror(v, _SC("new member only works with classes")); if(sq_type(self) != OT_CLASS) return sq_throwerror(v, _SC("new member only works with classes"));
SQObjectPtr &key = v->GetUp(-3); SQObjectPtr &key = v->GetUp(-3);
if(sq_type(key) == OT_NULL) return sq_throwerror(v, _SC("null key")); if(sq_type(key) == OT_NULL) return sq_throwerror(v, _SC("null key"));
if(!v->NewSlotA(self,key,v->GetUp(-2),v->GetUp(-1),bstatic?true:false,false)) if(!v->NewSlotA(self,key,v->GetUp(-2),v->GetUp(-1),bstatic?true:false,false)) {
v->Pop(3);
return SQ_ERROR; return SQ_ERROR;
}
v->Pop(3);
return SQ_OK; return SQ_OK;
} }
@ -958,8 +961,11 @@ SQRESULT sq_rawnewmember(HSQUIRRELVM v,SQInteger idx,SQBool bstatic)
if(sq_type(self) != OT_CLASS) return sq_throwerror(v, _SC("new member only works with classes")); if(sq_type(self) != OT_CLASS) return sq_throwerror(v, _SC("new member only works with classes"));
SQObjectPtr &key = v->GetUp(-3); SQObjectPtr &key = v->GetUp(-3);
if(sq_type(key) == OT_NULL) return sq_throwerror(v, _SC("null key")); if(sq_type(key) == OT_NULL) return sq_throwerror(v, _SC("null key"));
if(!v->NewSlotA(self,key,v->GetUp(-2),v->GetUp(-1),bstatic?true:false,true)) if(!v->NewSlotA(self,key,v->GetUp(-2),v->GetUp(-1),bstatic?true:false,true)) {
v->Pop(3);
return SQ_ERROR; return SQ_ERROR;
}
v->Pop(3);
return SQ_OK; return SQ_OK;
} }