changeset 13970:bf79f84b8631 draft

(svn r18508) -Fix [FS#3372]: if a rail station class had less data than capacity it would try to set a negative position
author rubidium <rubidium@openttd.org>
date Tue, 15 Dec 2009 01:38:55 +0000
parents 93cebbb864df
children 31d285a8abf8
files src/core/math_func.hpp src/rail_gui.cpp
diffstat 2 files changed, 2 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/core/math_func.hpp
+++ b/src/core/math_func.hpp
@@ -150,6 +150,7 @@
 template <typename T>
 static FORCEINLINE T Clamp(const T a, const T min, const T max)
 {
+	assert(min <= max);
 	if (a <= min) return min;
 	if (a >= max) return max;
 	return a;
--- a/src/rail_gui.cpp
+++ b/src/rail_gui.cpp
@@ -1017,7 +1017,7 @@
 
 			this->vscroll.SetCount(_railstation.station_count);
 			this->vscroll.SetCapacity(GB(this->GetWidget<NWidgetCore>(BRSW_NEWST_LIST)->widget_data, MAT_ROW_START, MAT_ROW_BITS));
-			this->vscroll.SetPosition(Clamp(_railstation.station_type - 2, 0, this->vscroll.GetCount() - this->vscroll.GetCapacity()));
+			this->vscroll.SetPosition(Clamp(_railstation.station_type - 2, 0, max(this->vscroll.GetCount() - this->vscroll.GetCapacity(), 0)));
 		} else {
 			/* New stations are not available, so ensure the default station
 			 * type is 'selected'. */