diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 8894ef309c..8de55e3c23 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -2474,9 +2474,10 @@ static void window_ride_main_update(rct_window* w) return; Vehicle* vehicle = GetEntity(vehicleSpriteIndex); - if (vehicle->status != VEHICLE_STATUS_TRAVELLING && vehicle->status != VEHICLE_STATUS_TRAVELLING_CABLE_LIFT - && vehicle->status != VEHICLE_STATUS_TRAVELLING_DODGEMS - && vehicle->status != VEHICLE_STATUS_TRAVELLING_BOAT) + if (vehicle == nullptr + || (vehicle->status != VEHICLE_STATUS_TRAVELLING && vehicle->status != VEHICLE_STATUS_TRAVELLING_CABLE_LIFT + && vehicle->status != VEHICLE_STATUS_TRAVELLING_DODGEMS + && vehicle->status != VEHICLE_STATUS_TRAVELLING_BOAT)) { return; } @@ -2683,14 +2684,17 @@ static rct_string_id window_ride_get_status_vehicle(rct_window* w, void* argumen { auto ride = get_ride(w->number); if (ride == nullptr) - return 0; + return STR_EMPTY; auto vehicleIndex = w->ride.view - 1; auto vehicleSpriteIndex = ride->vehicles[vehicleIndex]; if (vehicleSpriteIndex == SPRITE_INDEX_NULL) - return 0; + return STR_EMPTY; auto vehicle = GetEntity(vehicleSpriteIndex); + if (vehicle == nullptr) + return STR_EMPTY; + if (vehicle->status != VEHICLE_STATUS_CRASHING && vehicle->status != VEHICLE_STATUS_CRASHED) { int32_t trackType = vehicle->GetTrackType(); @@ -4063,7 +4067,11 @@ static void window_ride_maintenance_dropdown(rct_window* w, rct_widgetindex widg uint16_t spriteId = ride->vehicles[i]; while (spriteId != SPRITE_INDEX_NULL) { - vehicle = GET_VEHICLE(spriteId); + vehicle = GetEntity(spriteId); + if (vehicle == nullptr) + { + break; + } vehicle->ClearUpdateFlag( VEHICLE_UPDATE_FLAG_BROKEN_CAR | VEHICLE_UPDATE_FLAG_ZERO_VELOCITY | VEHICLE_UPDATE_FLAG_BROKEN_TRAIN); @@ -4076,11 +4084,17 @@ static void window_ride_maintenance_dropdown(rct_window* w, rct_widgetindex widg case BREAKDOWN_DOORS_STUCK_CLOSED: case BREAKDOWN_DOORS_STUCK_OPEN: vehicle = GetEntity(ride->vehicles[ride->broken_vehicle]); - vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_BROKEN_CAR); + if (vehicle != nullptr) + { + vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_BROKEN_CAR); + } break; case BREAKDOWN_VEHICLE_MALFUNCTION: vehicle = GetEntity(ride->vehicles[ride->broken_vehicle]); - vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_BROKEN_TRAIN); + if (vehicle != nullptr) + { + vehicle->ClearUpdateFlag(VEHICLE_UPDATE_FLAG_BROKEN_TRAIN); + } break; } ride->lifecycle_flags &= ~(RIDE_LIFECYCLE_BREAKDOWN_PENDING | RIDE_LIFECYCLE_BROKEN_DOWN); diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index 2e3f960b8a..31477b17fb 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -337,7 +337,7 @@ rct_window* window_staff_open(Peep* peep) window_init_scroll_widgets(w); window_staff_viewport_init(w); - if (GetEntity(w->number)->State == PEEP_STATE_PICKED) + if (peep->State == PEEP_STATE_PICKED) window_event_mouse_up_call(w, WIDX_CHECKBOX_3); return w; @@ -352,7 +352,7 @@ void window_staff_disable_widgets(rct_window* w) Peep* peep = GetEntity(w->number); uint64_t disabled_widgets = (1 << WIDX_TAB_4); - if (peep->StaffType == STAFF_TYPE_SECURITY) + if (peep != nullptr && peep->StaffType == STAFF_TYPE_SECURITY) { disabled_widgets |= (1 << WIDX_TAB_2); }