Fix potential crash in QWindowsWindow::setDropSiteEnabled().
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Mon, 17 Aug 2015 11:18:28 +0000 (13:18 +0200)
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Tue, 25 Aug 2015 11:41:13 +0000 (11:41 +0000)
Release drop target after CoLockObjectExternal() to prevent
a potential access violation.

Change-Id: I2c3bde9f8008b1d567544596f56ebfd61fe6ad86
Task-number: QTBUG-47737
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
src/plugins/platforms/windows/qwindowswindow.cpp

index 853cf036a7a84fa64a7e1e604458827a510c501e..288f73cb8ff40f13f8221e28f448e92bbc7e6014 100644 (file)
@@ -1034,8 +1034,8 @@ void QWindowsWindow::setDropSiteEnabled(bool dropEnabled)
         RegisterDragDrop(m_data.hwnd, m_dropTarget);
         CoLockObjectExternal(m_dropTarget, true, true);
     } else {
-        m_dropTarget->Release();
         CoLockObjectExternal(m_dropTarget, false, true);
+        m_dropTarget->Release();
         RevokeDragDrop(m_data.hwnd);
         m_dropTarget = 0;
     }