From 5fbd6598b754f38b71e56a2385a0a2712d877510 Mon Sep 17 00:00:00 2001 From: Mark Jansen Date: Sat, 24 Sep 2016 14:15:23 +0000 Subject: [PATCH] [MSGINA] Prevent an infinite loop in ShellDimScreen. CORE-12028 svn path=/trunk/; revision=72794 --- reactos/dll/win32/msgina/dimmedwindow.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/reactos/dll/win32/msgina/dimmedwindow.cpp b/reactos/dll/win32/msgina/dimmedwindow.cpp index e3df8251e63..0a3abad6f0f 100644 --- a/reactos/dll/win32/msgina/dimmedwindow.cpp +++ b/reactos/dll/win32/msgina/dimmedwindow.cpp @@ -104,7 +104,7 @@ public: { MSG msg; - while (!IsWindowVisible(m_hwnd)) + while (!IsWindowVisible(m_hwnd) && IsWindow(m_hwnd)) { while (::PeekMessage(&msg, m_hwnd, 0, 0, PM_REMOVE)) { @@ -261,6 +261,15 @@ ShellDimScreen(void** pUnknown, HWND* hWindow) pWindow->WaitForInit(); + if (!IsWindow(pWindow->Wnd())) + { + refcount = pWindow->AddRef(); + while (refcount) + refcount = pWindow->Release(); + + return E_FAIL; + } + _SEH2_TRY { hr = pWindow->QueryInterface(IID_IUnknown, pUnknown); -- 2.17.1