mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-12 18:40:29 +00:00
(svn r23496) -Fix: [Squirrel] Provide a proper error message when the _cmp meta-function doesn't return an integer
This commit is contained in:
parent
686297c2c6
commit
8f36e70e35
11
src/3rdparty/squirrel/squirrel/sqvm.cpp
vendored
11
src/3rdparty/squirrel/squirrel/sqvm.cpp
vendored
@ -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{
|
||||
|
Loading…
Reference in New Issue
Block a user