From 296637d6f2f7be38f6f7ada56abc9d4df5740e50 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Sat, 22 Feb 2014 21:08:20 +0100 Subject: [PATCH] Fix crash when pressing Tab When pressing Tab for a long time, Dolphin will sooner or later crash because the result of FindFocus() has become NULL (toctou). --- Source/Core/DolphinWX/Frame.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Source/Core/DolphinWX/Frame.cpp b/Source/Core/DolphinWX/Frame.cpp index c7134167cf..87fb799616 100644 --- a/Source/Core/DolphinWX/Frame.cpp +++ b/Source/Core/DolphinWX/Frame.cpp @@ -706,13 +706,16 @@ bool CFrame::RendererHasFocus() if (m_RenderParent->GetParent()->GetHWND() == GetForegroundWindow()) return true; #else - if (wxWindow::FindFocus() == nullptr) + wxWindow *window = wxWindow::FindFocus(); + if (window == nullptr) return false; // Why these different cases? - if (m_RenderParent == wxWindow::FindFocus() || - m_RenderParent == wxWindow::FindFocus()->GetParent() || - m_RenderParent->GetParent() == wxWindow::FindFocus()->GetParent()) + if (m_RenderParent == window || + m_RenderParent == window->GetParent() || + m_RenderParent->GetParent() == window->GetParent()) + { return true; + } #endif return false; }