Browse Source

Merge pull request #112 from breakin/fix/sq_newmember_pop

sq_newmember and sq_rawnewmember argument popping
Alberto Demichelis 8 years ago
parent
commit
7fe2a71c13
1 changed files with 8 additions and 2 deletions
  1. 8 2
      squirrel/sqapi.cpp

+ 8 - 2
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;
 }