From b97473e874e133b86817a5f0b59624f977a32e50 Mon Sep 17 00:00:00 2001 From: peter1138 Date: Tue, 25 Oct 2005 19:52:25 +0000 Subject: [PATCH] (svn r3089) Fix possible issue with out-of-bounds array access in replace vehicle gui, and add brief commenting. --- vehicle_gui.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/vehicle_gui.c b/vehicle_gui.c index bff8ec1b15..7c89147589 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);