From 74cca2d7d3e2160d51660c231db731b396d0238a Mon Sep 17 00:00:00 2001 From: lindqva Date: Tue, 14 Nov 2017 13:22:05 +0100 Subject: [PATCH] Fix a bug where sq_newmember and sq_rawnewmember did not pop their arguments. --- squirrel/sqapi.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/squirrel/sqapi.cpp b/squirrel/sqapi.cpp index 322a453..896e7e6 100644 --- a/squirrel/sqapi.cpp +++ b/squirrel/sqapi.cpp @@ -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")); SQObjectPtr &key = v->GetUp(-3); 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; + } + v->Pop(3); 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")); SQObjectPtr &key = v->GetUp(-3); 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; + } + v->Pop(3); return SQ_OK; }