From b34b7f63eeb784d36444514955a26a045f491c9b Mon Sep 17 00:00:00 2001 From: Pokechu22 Date: Mon, 23 Sep 2024 22:47:44 -0700 Subject: [PATCH] Fix random crash when using the cheat search Before, Dolphin would randomly crash when updating the cheat search when automatic refresh was enabled. (Having a large number of addresses listed, e.g. by starting with an "any value" search, may contribute). The crash was due to QTableWidget::item returning nullptr in RefreshGUICurrentValues, presumably due to the table being resized on the UI thread while the emulated CPU thread was updating the values. I've fixed this by pausing the CPU thread for the entirety of OnNextScanClicked; this eliminated crashes in my testing. --- Source/Core/DolphinQt/CheatSearchWidget.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Source/Core/DolphinQt/CheatSearchWidget.cpp b/Source/Core/DolphinQt/CheatSearchWidget.cpp index 3a4c024c97..df4cb8dd11 100644 --- a/Source/Core/DolphinQt/CheatSearchWidget.cpp +++ b/Source/Core/DolphinQt/CheatSearchWidget.cpp @@ -280,6 +280,8 @@ void CheatSearchWidget::ConnectWidgets() void CheatSearchWidget::OnNextScanClicked() { + Core::CPUThreadGuard guard{m_system}; + const bool had_old_results = m_session->WasFirstSearchDone(); const auto filter_type = m_value_source_dropdown->currentData().value(); @@ -304,7 +306,7 @@ void CheatSearchWidget::OnNextScanClicked() } const size_t old_count = m_session->GetResultCount(); - const Cheats::SearchErrorCode error_code = m_session->RunSearch(Core::CPUThreadGuard{m_system}); + const Cheats::SearchErrorCode error_code = m_session->RunSearch(guard); if (error_code == Cheats::SearchErrorCode::Success) {