From 25c68a89d7252a13172b43b674a8d15e7797c953 Mon Sep 17 00:00:00 2001 From: mchughalex <25671999+mchughalex@users.noreply.github.com> Date: Tue, 21 Jul 2026 10:50:13 +0100 Subject: [PATCH] ui: guard the settings-menu gamepad poll against runtime teardown --- src/skate3_app_common.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/skate3_app_common.cpp b/src/skate3_app_common.cpp index fb0b3c1..4266aff 100644 --- a/src/skate3_app_common.cpp +++ b/src/skate3_app_common.cpp @@ -909,7 +909,11 @@ void Skate3BaseApp::ToggleSimpleSettings() { // zeroes guest-facing input while the settings screen is open. auto poll_gamepad = [this]() { rex::ui::SimpleSettingsGamepad pad; - auto* input_system = static_cast(runtime()->input_system()); + // The dialog can be painted (and thus poll) during a frame that races + // runtime teardown at close time, when runtime() is already gone. + auto* rt = runtime(); + auto* input_system = + rt ? static_cast(rt->input_system()) : nullptr; if (input_system) { rex::input::X_INPUT_GAMEPAD state; if (input_system->GetUiGamepadState(&state)) {