summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2005-10-25 19:52:25 +0000
committerpeter1138 <peter1138@openttd.org>2005-10-25 19:52:25 +0000
commitb97473e874e133b86817a5f0b59624f977a32e50 (patch)
treef492aec44aaa13c7dca77fc7169b529521519d08
parent477aa9f69c7de801fcab952cb7ddc7af36f7f89d (diff)
downloadopenttd-b97473e874e133b86817a5f0b59624f977a32e50.tar.xz
(svn r3089) Fix possible issue with out-of-bounds array access in replace vehicle gui, and add brief commenting.
-rw-r--r--vehicle_gui.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/vehicle_gui.c b/vehicle_gui.c
index bff8ec1b1..7c8914758 100644
--- a/vehicle_gui.c
+++ b/vehicle_gui.c
@@ -821,13 +821,22 @@ static void ReplaceVehicleWndProc(Window *w, WindowEvent *e)
}
}
- if ( selected_id[0] == selected_id[1] || p->engine_replacement[selected_id[0]] == selected_id[1]
- || selected_id[0] == -1 || selected_id[1] == -1 )
+ // Disable the "Start Replacing" button if:
+ // Either list is empty
+ // or Both lists have the same vehicle selected
+ // or The right list (new replacement) has the existing replacement vehicle selected
+ if (selected_id[0] == -1 || selected_id[1] == -1 ||
+ selected_id[0] == selected_id[1] ||
+ p->engine_replacement[selected_id[0]] == selected_id[1])
SETBIT(w->disabled_state, 4);
else
CLRBIT(w->disabled_state, 4);
- if (p->engine_replacement[selected_id[0]] == INVALID_ENGINE || selected_id[0] == -1)
+ // Disable the "Stop Replacing" button if:
+ // The left list (existing vehicle) is empty
+ // or The selected vehicle has no replacement set up
+ if (selected_id[0] == -1 ||
+ p->engine_replacement[selected_id[0]] == INVALID_ENGINE)
SETBIT(w->disabled_state, 6);
else
CLRBIT(w->disabled_state, 6);