Prechádzať zdrojové kódy

Fixed "container_rawexists" and "sq_rawexists".

mingodad 13 rokov pred
rodič
commit
d962130759
2 zmenil súbory, kde vykonal 11 pridanie a 17 odobranie
  1. 10 14
      squirrel/sqapi.cpp
  2. 1 3
      squirrel/sqbaselib.cpp

+ 10 - 14
squirrel/sqapi.cpp

@@ -1195,30 +1195,26 @@ SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx)
 SQBool sq_rawexists(HSQUIRRELVM v,SQInteger idx)
 SQBool sq_rawexists(HSQUIRRELVM v,SQInteger idx)
 {
 {
 	SQObjectPtr &self=stack_get(v,idx);
 	SQObjectPtr &self=stack_get(v,idx);
-	SQObjectPtr &obj = v->GetUp(-1);
+	SQObjectPtr &obj = v->GetUp(-1);
+	SQBool result = SQFalse;
 	switch(type(self)) {
 	switch(type(self)) {
 	case OT_TABLE:
 	case OT_TABLE:
-		if(_table(self)->Exists(obj))
-			return SQTrue;
+		result = _table(self)->Exists(obj);
 		break;
 		break;
 	case OT_CLASS:
 	case OT_CLASS:
-		if(_class(self)->Exists(obj))
-			return SQTrue;
+		result = _class(self)->Exists(obj);
 		break;
 		break;
 	case OT_INSTANCE:
 	case OT_INSTANCE:
-		if(_instance(self)->Exists(obj))
-			return SQTrue;
+		result = _instance(self)->Exists(obj);
 		break;
 		break;
 	case OT_ARRAY:
 	case OT_ARRAY:
 		if(sq_isnumeric(obj)){
 		if(sq_isnumeric(obj)){
-			if(_array(self)->Exists(tointeger(obj))) {
-				return SQTrue;
-			}
-		}
-	default:
-		v->Pop();
+			result = _array(self)->Exists(tointeger(obj));
+		}
+		break;
 	}
 	}
-	return SQFalse;
+	v->Pop();
+	return result;
 }
 }
 
 
 SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po)
 SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po)

+ 1 - 3
squirrel/sqbaselib.cpp

@@ -527,9 +527,7 @@ static SQRESULT table_rawdelete(HSQUIRRELVM v)
 
 
 static SQRESULT container_rawexists(HSQUIRRELVM v)
 static SQRESULT container_rawexists(HSQUIRRELVM v)
 {
 {
-	if(SQ_SUCCEEDED(sq_rawexists(v,-2))) {
-		sq_pushbool(v,SQTrue);
-	} else sq_pushbool(v,SQFalse);
+	sq_pushbool(v, sq_rawexists(v,-2));
 	return 1;
 	return 1;
 }
 }