(svn r3089) Fix possible issue with out-of-bounds array access in replace vehicle gui, and add brief commenting.

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
peter1138 19 years ago
parent 477aa9f69c
commit b97473e874

@ -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);

Loading…
Cancel
Save