(svn r11039) -Fix [FS#1191]: underflow that caused overflows in the performance rating calculation.
authorrubidium
Sun, 02 Sep 2007 20:41:46 +0000
changeset 7520 9732f948cb49
parent 7519 9342b9f07af6
child 7521 0da1e91510e4
(svn r11039) -Fix [FS#1191]: underflow that caused overflows in the performance rating calculation.
src/economy.cpp
src/graph_gui.cpp
--- a/src/economy.cpp	Sun Sep 02 20:28:53 2007 +0000
+++ b/src/economy.cpp	Sun Sep 02 20:41:46 2007 +0000
@@ -217,10 +217,7 @@
 			/* Skip the total */
 			if (i == SCORE_TOTAL) continue;
 			/*  Check the score */
-			s = (_score_part[owner][i] >= _score_info[i].needed) ?
-				_score_info[i].score :
-				_score_part[owner][i] * _score_info[i].score / _score_info[i].needed;
-			if (s < 0) s = 0;
+			s = clamp(_score_part[owner][i], 0, _score_info[i].needed) * _score_info[i].score / _score_info[i].needed;
 			score += s;
 			total_score += _score_info[i].score;
 		}
--- a/src/graph_gui.cpp	Sun Sep 02 20:28:53 2007 +0000
+++ b/src/graph_gui.cpp	Sun Sep 02 20:41:46 2007 +0000
@@ -1006,13 +1006,7 @@
 				DrawStringRightAligned(107, y, SET_PERFORMANCE_DETAIL_INT, 0);
 
 				/* Calculate the %-bar */
-				if (val > needed) {
-					x = 50;
-				} else if (val == 0) {
-					x = 0;
-				} else {
-					x = val * 50 / needed;
-				}
+				x = clamp(val, 0, needed) * 50 / needed;
 
 				/* SCORE_LOAN is inversed */
 				if (val < 0 && i == SCORE_LOAN) x = 0;
@@ -1022,7 +1016,7 @@
 				if (x != 50) GfxFillRect(112 + x, y - 2, 112 + 50, y + 10, color_notdone);
 
 				/* Calculate the % */
-				x = (val <= needed) ? val * 100 / needed : 100;
+				x = clamp(val, 0, needed) * 100 / needed;
 
 				/* SCORE_LOAN is inversed */
 				if (val < 0 && i == SCORE_LOAN) x = 0;