(svn r23496) -Fix: [Squirrel] Provide a proper error message when the _cmp meta-function doesn't return an integer

This commit is contained in:
yexo 2011-12-11 15:52:18 +00:00
parent 686297c2c6
commit 8f36e70e35
1 changed files with 8 additions and 3 deletions

View File

@ -195,14 +195,19 @@ bool SQVM::ObjCmp(const SQObjectPtr &o1,const SQObjectPtr &o2,SQInteger &result)
case OT_INSTANCE:
if(_delegable(o1)->_delegate) {
Push(o1);Push(o2);
if(CallMetaMethod(_delegable(o1),MT_CMP,2,res)) break;
if(CallMetaMethod(_delegable(o1),MT_CMP,2,res)) {
if(type(res) != OT_INTEGER) {
Raise_Error(_SC("_cmp must return an integer"));
return false;
}
_RET_SUCCEED(_integer(res))
}
}
//continues through (no break needed)
default:
_RET_SUCCEED( _userpointer(o1) < _userpointer(o2)?-1:1 );
}
if(type(res)!=OT_INTEGER) { Raise_CompareError(o1,o2); return false; }
_RET_SUCCEED(_integer(res));
assert(0);
}
else{