Commit 345ab7d5 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

shell32/shellview: Don't crash on ::DragLeave called without droptraget.

parent 78c909fb
......@@ -2407,17 +2407,25 @@ static HRESULT WINAPI ISVDropTarget_DragOver(IDropTarget *iface, DWORD grfKeySta
return drag_notify_subitem(This, grfKeyState, pt, pdwEffect);
}
static HRESULT WINAPI ISVDropTarget_DragLeave(IDropTarget *iface) {
static HRESULT WINAPI ISVDropTarget_DragLeave(IDropTarget *iface)
{
IShellViewImpl *This = impl_from_IDropTarget(iface);
IDropTarget_DragLeave(This->pCurDropTarget);
if (This->pCurDropTarget)
{
IDropTarget_DragLeave(This->pCurDropTarget);
IDropTarget_Release(This->pCurDropTarget);
This->pCurDropTarget = NULL;
}
if (This->pCurDataObject)
{
IDataObject_Release(This->pCurDataObject);
This->pCurDataObject = NULL;
}
IDropTarget_Release(This->pCurDropTarget);
IDataObject_Release(This->pCurDataObject);
This->pCurDataObject = NULL;
This->pCurDropTarget = NULL;
This->iDragOverItem = 0;
return S_OK;
}
......
......@@ -318,6 +318,7 @@ static void test_IShellView_CreateViewWindow(void)
IShellFolder *desktop;
FOLDERSETTINGS settings;
IShellView *view;
IDropTarget *dt;
HWND hwnd_view;
HRESULT hr;
RECT r = {0};
......@@ -346,6 +347,13 @@ if (0)
ok(hr == E_UNEXPECTED, "got (0x%08x)\n", hr);
ok(hwnd_view == 0, "got %p\n", hwnd_view);
/* ::DragLeave without drag operation */
hr = IShellView_QueryInterface(view, &IID_IDropTarget, (void**)&dt);
ok(hr == S_OK, "got (0x%08x)\n", hr);
hr = IDropTarget_DragLeave(dt);
ok(hr == S_OK, "got (0x%08x)\n", hr);
IDropTarget_Release(dt);
IShellView_Release(view);
IShellFolder_Release(desktop);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment