(svn r3089) Fix possible issue with out-of-bounds array access in replace vehicle gui, and add brief commenting.
authorpeter1138
Tue, 25 Oct 2005 19:52:25 +0000
changeset 2556 a6f1c61fa5d0
parent 2555 58ed3afaf3ab
child 2557 3ed00023e382
(svn r3089) Fix possible issue with out-of-bounds array access in replace vehicle gui, and add brief commenting.
vehicle_gui.c
--- a/vehicle_gui.c	Tue Oct 25 19:41:32 2005 +0000
+++ b/vehicle_gui.c	Tue Oct 25 19:52:25 2005 +0000
@@ -821,13 +821,22 @@
 					}
 				}
 
-				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);