summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-09-02 20:41:46 +0000
committerrubidium <rubidium@openttd.org>2007-09-02 20:41:46 +0000
commitb1effc466eac33997567e2f2e68812afb1c0a7f6 (patch)
treee63e7fae0c819a5ffcf9150bc1fd58d6048144c9 /src
parentd396b0c55695414d7ab3d3ddcbe33ecdd4d7f6fa (diff)
downloadopenttd-b1effc466eac33997567e2f2e68812afb1c0a7f6.tar.xz
(svn r11039) -Fix [FS#1191]: underflow that caused overflows in the performance rating calculation.
Diffstat (limited to 'src')
-rw-r--r--src/economy.cpp5
-rw-r--r--src/graph_gui.cpp10
2 files changed, 3 insertions, 12 deletions
diff --git a/src/economy.cpp b/src/economy.cpp
index a9b0d9229..8c5be601c 100644
--- a/src/economy.cpp
+++ b/src/economy.cpp
@@ -217,10 +217,7 @@ int UpdateCompanyRatingAndValue(Player *p, bool update)
/* 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;
}
diff --git a/src/graph_gui.cpp b/src/graph_gui.cpp
index 9599d1fef..7231ec6f3 100644
--- a/src/graph_gui.cpp
+++ b/src/graph_gui.cpp
@@ -1006,13 +1006,7 @@ static void PerformanceRatingDetailWndProc(Window *w, WindowEvent *e)
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 @@ static void PerformanceRatingDetailWndProc(Window *w, WindowEvent *e)
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;