Changeset - r18639:abf73430e6ba
[Not reviewed]
master
0 1 0
yexo - 12 years ago 2011-12-11 15:52:18
yexo@openttd.org
(svn r23496) -Fix: [Squirrel] Provide a proper error message when the _cmp meta-function doesn't return an integer
1 file changed with 8 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/3rdparty/squirrel/squirrel/sqvm.cpp
Show inline comments
 
@@ -195,14 +195,19 @@ bool SQVM::ObjCmp(const SQObjectPtr &o1,
 
		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{
0 comments (0 inline, 0 general)