changeset 20661:1e53dec875f8 draft

(svn r25617) -Fix [FS#5655] (r25377): crash when Ctrl+clicking the start date button in timetable window without any orders
author rubidium <rubidium@openttd.org>
date Wed, 17 Jul 2013 18:37:13 +0000
parents a3210af1920a
children 89bf52054fbc
files src/timetable_cmd.cpp src/timetable_gui.cpp
diffstat 2 files changed, 6 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/timetable_cmd.cpp
+++ b/src/timetable_cmd.cpp
@@ -166,7 +166,7 @@
 	VehicleID veh = GB(p1, 0, 20);
 
 	Vehicle *v = Vehicle::GetIfValid(veh);
-	if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR;
+	if (v == NULL || !v->IsPrimaryVehicle() || v->orders.list == NULL) return CMD_ERROR;
 
 	CommandCost ret = CheckOwnership(v->owner);
 	if (ret.Failed()) return ret;
@@ -235,7 +235,7 @@
 {
 	bool timetable_all = HasBit(p1, 20);
 	Vehicle *v = Vehicle::GetIfValid(GB(p1, 0, 20));
-	if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR;
+	if (v == NULL || !v->IsPrimaryVehicle() || v->orders.list == NULL) return CMD_ERROR;
 
 	CommandCost ret = CheckOwnership(v->owner);
 	if (ret.Failed()) return ret;
@@ -302,7 +302,7 @@
 	VehicleID veh = GB(p1, 0, 20);
 
 	Vehicle *v = Vehicle::GetIfValid(veh);
-	if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR;
+	if (v == NULL || !v->IsPrimaryVehicle() || v->orders.list == NULL) return CMD_ERROR;
 
 	CommandCost ret = CheckOwnership(v->owner);
 	if (ret.Failed()) return ret;
--- a/src/timetable_gui.cpp
+++ b/src/timetable_gui.cpp
@@ -328,9 +328,9 @@
 			this->SetWidgetDisabledState(WID_VT_CLEAR_SPEED, disable_speed);
 			this->SetWidgetDisabledState(WID_VT_SHARED_ORDER_LIST, !v->IsOrderListShared());
 
-			this->EnableWidget(WID_VT_START_DATE);
-			this->EnableWidget(WID_VT_RESET_LATENESS);
-			this->EnableWidget(WID_VT_AUTOFILL);
+			this->SetWidgetDisabledState(WID_VT_START_DATE, v->orders.list == NULL);
+			this->SetWidgetDisabledState(WID_VT_RESET_LATENESS, v->orders.list == NULL);
+			this->SetWidgetDisabledState(WID_VT_AUTOFILL, v->orders.list == NULL);
 		} else {
 			this->DisableWidget(WID_VT_START_DATE);
 			this->DisableWidget(WID_VT_CHANGE_TIME);