From: "Roman Pišl" Subject: [PATCH 2/2] ole32: Avoid calling QueryContinueDrag recursively. Message-Id: <20200216130536.24231-2-rpisl@seznam.cz> Date: Sun, 16 Feb 2020 14:05:36 +0100 In-Reply-To: <20200216130536.24231-1-rpisl@seznam.cz> References: <20200216130536.24231-1-rpisl@seznam.cz> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48569 Signed-off-by: Roman Pišl --- dlls/ole32/ole2.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dlls/ole32/ole2.c b/dlls/ole32/ole2.c index 757458ad20..9d404abba5 100644 --- a/dlls/ole32/ole2.c +++ b/dlls/ole32/ole2.c @@ -62,6 +62,7 @@ typedef struct tagTrackerWindowInfo DWORD dwOKEffect; DWORD* pdwEffect; BOOL trackingDone; + BOOL inTrackCall; HRESULT returnValue; BOOL escPressed; @@ -767,6 +768,7 @@ HRESULT WINAPI DoDragDrop ( trackerInfo.pdwEffect = pdwEffect; trackerInfo.trackingDone = FALSE; trackerInfo.escPressed = FALSE; + trackerInfo.inTrackCall = FALSE; trackerInfo.curTargetHWND = 0; trackerInfo.curDragTarget = 0; @@ -2163,7 +2165,11 @@ static LRESULT WINAPI OLEDD_DragTrackerWindowProc( { TrackerWindowInfo *trackerInfo = (TrackerWindowInfo*)GetWindowLongPtrA(hwnd, 0); if (trackerInfo->trackingDone) break; + if (trackerInfo->inTrackCall) break; + + trackerInfo->inTrackCall = TRUE; OLEDD_TrackStateChange(trackerInfo); + trackerInfo->inTrackCall = FALSE; break; } case WM_DESTROY: -- 2.20.1