From cd735fb613b879c52f17727105a351f34b538387 Mon Sep 17 00:00:00 2001 From: rubidium Date: Sun, 29 Jan 2012 14:27:21 +0000 Subject: (svn r23870) -Fix [FS#5004]: scripts with a bad comparator could lock up OpenTTD --- src/3rdparty/squirrel/squirrel/sqbaselib.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/3rdparty/squirrel') diff --git a/src/3rdparty/squirrel/squirrel/sqbaselib.cpp b/src/3rdparty/squirrel/squirrel/sqbaselib.cpp index 8d2126950..486b888b5 100644 --- a/src/3rdparty/squirrel/squirrel/sqbaselib.cpp +++ b/src/3rdparty/squirrel/squirrel/sqbaselib.cpp @@ -538,6 +538,10 @@ bool _hsort_sift_down(HSQUIRRELVM v,SQArray *arr, SQInteger root, SQInteger bott if(!_sort_compare(v,arr->_values[root],arr->_values[maxChild],func,ret)) return false; if (ret < 0) { + if (root == maxChild) { + v->Raise_Error(_SC("inconsistent compare function")); + return false; // We'd be swapping ourselve. The compare function is incorrect + } _Swap(arr->_values[root],arr->_values[maxChild]); root = maxChild; } -- cgit v1.2.3-54-g00ecf