(svn r10552) -Fix [FS#1034, r10546]: opening Available Aircrafts segfaulted
authortruelight
Fri, 13 Jul 2007 19:06:12 +0000
changeset 7251 6c9c673182e9
parent 7250 896c3efea8aa
child 7252 3440dde39b84
(svn r10552) -Fix [FS#1034, r10546]: opening Available Aircrafts segfaulted
src/build_vehicle_gui.cpp
--- a/src/build_vehicle_gui.cpp	Fri Jul 13 16:56:07 2007 +0000
+++ b/src/build_vehicle_gui.cpp	Fri Jul 13 19:06:12 2007 +0000
@@ -672,7 +672,7 @@
 	int num_wagons  = 0;
 	buildvehicle_d *bv = &WP(w, buildvehicle_d);
 
-	bv->filter.railtype = (w->window_number == 0) ? RAILTYPE_END : GetRailType(w->window_number);
+	bv->filter.railtype = (w->window_number <= VEH_END) ? RAILTYPE_END : GetRailType(w->window_number);
 
 	EngList_RemoveAll(&bv->eng_list);
 
@@ -764,7 +764,8 @@
 	sel_id = INVALID_ENGINE;
 	for (eid = AIRCRAFT_ENGINES_INDEX; eid < AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES; eid++) {
 		if (!IsEngineBuildable(eid, VEH_AIRCRAFT, _local_player)) continue;
-		if (w->window_number != 0 && !IsAircraftBuildableAtStation(eid, w->window_number)) continue;
+		/* First VEH_END window_numbers are fake to allow a window open for all different types at once */
+		if (w->window_number > VEH_END && !IsAircraftBuildableAtStation(eid, w->window_number)) continue;
 
 		EngList_Add(&bv->eng_list, eid);
 		if (eid == bv->sel_engine) sel_id = eid;
@@ -887,7 +888,7 @@
 	const buildvehicle_d *bv = &WP(w, buildvehicle_d);
 	uint max = min(w->vscroll.pos + w->vscroll.cap, EngList_Count(&bv->eng_list));
 
-	SetWindowWidgetDisabledState(w, BUILD_VEHICLE_WIDGET_BUILD, w->window_number == 0);
+	SetWindowWidgetDisabledState(w, BUILD_VEHICLE_WIDGET_BUILD, w->window_number <= VEH_END);
 
 	SetVScrollCount(w, EngList_Count(&bv->eng_list));
 	SetDParam(0, bv->filter.railtype + STR_881C_NEW_RAIL_VEHICLES); // This should only affect rail vehicles