From 56e6ec2c23d89cdd210c926109d6290b0641c00c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Thu, 26 Mar 2020 23:49:10 +0100 Subject: [PATCH] Fix #11068: segfault when trying to clear empty list (#11069) The report in #11068 was using track designs manager with "Boat hire" ride, for which there were no designs and selecting "Clear" button on the list accessed empty vector in `_filteredTrackIds`. --- src/openrct2-ui/windows/TrackList.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/openrct2-ui/windows/TrackList.cpp b/src/openrct2-ui/windows/TrackList.cpp index e48a0418df..ae5ad5ac37 100644 --- a/src/openrct2-ui/windows/TrackList.cpp +++ b/src/openrct2-ui/windows/TrackList.cpp @@ -337,7 +337,10 @@ static void window_track_list_mouseup(rct_window* w, rct_widgetindex widgetIndex // Keep the highlighted item selected if (gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER) { - w->selected_list_item = _filteredTrackIds[w->selected_list_item]; + if (w->selected_list_item != -1 && _filteredTrackIds.size() > static_cast(w->selected_list_item)) + w->selected_list_item = _filteredTrackIds[w->selected_list_item]; + else + w->selected_list_item = -1; } else {