From d72e535117f241f442b4c820d67e00b59eb6f3c4 Mon Sep 17 00:00:00 2001 From: Matt <5415177+ZehMatt@users.noreply.github.com> Date: Thu, 15 Aug 2024 19:31:27 +0300 Subject: [PATCH] Fix #22457: Potential crash opening the scenario select window --- distribution/changelog.txt | 1 + src/openrct2-ui/windows/ScenarioSelect.cpp | 3 ++- src/openrct2-ui/windows/TrackList.cpp | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 6cb267ad7f..2c88f35308 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -14,6 +14,7 @@ - Fix: [#22307] Hover tooltips in financial charts are not invalidated properly. - Fix: [#22316] Potential crash when switching the drawing engine while the game is running. - Fix: [#22395, #22396] Misaligned tick marks in financial and guest count graphs (original bug). +- Fix: [#22457] Potential crash opening the scenario select window. 0.4.13 (2024-08-04) ------------------------------------------------------------------------ diff --git a/src/openrct2-ui/windows/ScenarioSelect.cpp b/src/openrct2-ui/windows/ScenarioSelect.cpp index 066d25fd23..2d4127def8 100644 --- a/src/openrct2-ui/windows/ScenarioSelect.cpp +++ b/src/openrct2-ui/windows/ScenarioSelect.cpp @@ -126,10 +126,11 @@ static Widget _scenarioSelectWidgets[] = { void OnOpen() override { + widgets = _scenarioSelectWidgets; + // Load scenario list ScenarioRepositoryScan(); - widgets = _scenarioSelectWidgets; _highlightedScenario = nullptr; InitTabs(); InitialiseListItems(); diff --git a/src/openrct2-ui/windows/TrackList.cpp b/src/openrct2-ui/windows/TrackList.cpp index 455a004cba..a06ff50712 100644 --- a/src/openrct2-ui/windows/TrackList.cpp +++ b/src/openrct2-ui/windows/TrackList.cpp @@ -214,12 +214,12 @@ static Widget _trackListWidgets[] = { void OnOpen() override { - LoadDesignsList(_window_track_list_item); - String::Set(_filterString, sizeof(_filterString), ""); _trackListWidgets[WIDX_FILTER_STRING].string = _filterString; widgets = _trackListWidgets; + LoadDesignsList(_window_track_list_item); + if (gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER) { widgets[WIDX_BACK].type = WindowWidgetType::Empty;