From f11dcb8478fc3158d7f1584235fe05e0aa7079bc Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sun, 14 Feb 2021 18:55:41 +0000 Subject: [PATCH] Fix crash if AI attempts to set order flags of invalid vehicle's order Fixes: 4c8b358f --- src/script/api/script_order.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/script/api/script_order.cpp b/src/script/api/script_order.cpp index ba9c2565c9..4330d91925 100644 --- a/src/script/api/script_order.cpp +++ b/src/script/api/script_order.cpp @@ -574,11 +574,13 @@ static void _DoCommandReturnSetOrderFlags(class ScriptInstance *instance) VehicleID vehicle_id = (VehicleID)ScriptObject::GetCallbackVariable(0); OrderPosition order_position = (OrderPosition)ScriptObject::GetCallbackVariable(1); ScriptOrderFlags order_flags = (ScriptOrderFlags)ScriptObject::GetCallbackVariable(2); - if (_settings_game.order.nonstop_only && ::Vehicle::Get(vehicle_id)->IsGroundVehicle()) order_flags |= OF_NON_STOP_INTERMEDIATE; order_position = ScriptOrder::ResolveOrderPosition(vehicle_id, order_position); EnforcePrecondition(false, IsValidVehicleOrder(vehicle_id, order_position)); + + if (_settings_game.order.nonstop_only && ::Vehicle::Get(vehicle_id)->IsGroundVehicle()) order_flags |= OF_NON_STOP_INTERMEDIATE; + EnforcePrecondition(false, AreOrderFlagsValid(GetOrderDestination(vehicle_id, order_position), order_flags)); const Order *order = ::ResolveOrder(vehicle_id, order_position);