Commit 2d8ae2cf authored by Rob Shearman's avatar Rob Shearman Committed by Alexandre Julliard

ole32: Check for COM not being initialised and an invalid window handle being…

ole32: Check for COM not being initialised and an invalid window handle being input to RegisterDragDrop.
parent db4972f1
...@@ -289,9 +289,18 @@ HRESULT WINAPI RegisterDragDrop( ...@@ -289,9 +289,18 @@ HRESULT WINAPI RegisterDragDrop(
TRACE("(%p,%p)\n", hwnd, pDropTarget); TRACE("(%p,%p)\n", hwnd, pDropTarget);
if (!COM_CurrentApt())
{
ERR("COM not initialized\n");
return CO_E_NOTINITIALIZED;
}
if (!pDropTarget) if (!pDropTarget)
return E_INVALIDARG; return E_INVALIDARG;
if (!IsWindow(hwnd))
return DRAGDROP_E_INVALIDHWND;
/* /*
* First, check if the window is already registered. * First, check if the window is already registered.
*/ */
......
...@@ -113,7 +113,6 @@ START_TEST(dragdrop) ...@@ -113,7 +113,6 @@ START_TEST(dragdrop)
HRESULT hr; HRESULT hr;
hr = RegisterDragDrop(GetDesktopWindow(), &DropTarget); hr = RegisterDragDrop(GetDesktopWindow(), &DropTarget);
todo_wine
ok(hr == CO_E_NOTINITIALIZED, "RegisterDragDrop without OLE initialized should have returned CO_E_NOTINITIALIZED instead of 0x%08x\n", hr); ok(hr == CO_E_NOTINITIALIZED, "RegisterDragDrop without OLE initialized should have returned CO_E_NOTINITIALIZED instead of 0x%08x\n", hr);
OleInitialize(NULL); OleInitialize(NULL);
...@@ -122,19 +121,14 @@ START_TEST(dragdrop) ...@@ -122,19 +121,14 @@ START_TEST(dragdrop)
ok(hr == E_INVALIDARG, "RegisterDragDrop with NULL IDropTarget * should return E_INVALIDARG instead of 0x%08x\n", hr); ok(hr == E_INVALIDARG, "RegisterDragDrop with NULL IDropTarget * should return E_INVALIDARG instead of 0x%08x\n", hr);
hr = RegisterDragDrop(NULL, &DropTarget); hr = RegisterDragDrop(NULL, &DropTarget);
todo_wine
ok(hr == DRAGDROP_E_INVALIDHWND, "RegisterDragDrop with NULL hwnd should return DRAGDROP_E_INVALIDHWND instead of 0x%08x\n", hr); ok(hr == DRAGDROP_E_INVALIDHWND, "RegisterDragDrop with NULL hwnd should return DRAGDROP_E_INVALIDHWND instead of 0x%08x\n", hr);
hr = RegisterDragDrop((HWND)0xdeadbeef, &DropTarget); hr = RegisterDragDrop((HWND)0xdeadbeef, &DropTarget);
todo_wine
ok(hr == DRAGDROP_E_INVALIDHWND, "RegisterDragDrop with garbage hwnd should return DRAGDROP_E_INVALIDHWND instead of 0x%08x\n", hr); ok(hr == DRAGDROP_E_INVALIDHWND, "RegisterDragDrop with garbage hwnd should return DRAGDROP_E_INVALIDHWND instead of 0x%08x\n", hr);
todo_wine
ok(droptarget_addref_called == 0, "DropTarget_AddRef shouldn't have been called\n"); ok(droptarget_addref_called == 0, "DropTarget_AddRef shouldn't have been called\n");
hr = RegisterDragDrop(GetDesktopWindow(), &DropTarget); hr = RegisterDragDrop(GetDesktopWindow(), &DropTarget);
todo_wine
ok_ole_success(hr, "RegisterDragDrop"); ok_ole_success(hr, "RegisterDragDrop");
todo_wine
ok(droptarget_addref_called == 1, "DropTarget_AddRef should have been called once, not %d times\n", droptarget_addref_called); ok(droptarget_addref_called == 1, "DropTarget_AddRef should have been called once, not %d times\n", droptarget_addref_called);
hr = RegisterDragDrop(GetDesktopWindow(), &DropTarget); hr = RegisterDragDrop(GetDesktopWindow(), &DropTarget);
...@@ -148,7 +142,6 @@ START_TEST(dragdrop) ...@@ -148,7 +142,6 @@ START_TEST(dragdrop)
hr = RevokeDragDrop(GetDesktopWindow()); hr = RevokeDragDrop(GetDesktopWindow());
todo_wine todo_wine
ok_ole_success(hr, "RevokeDragDrop"); ok_ole_success(hr, "RevokeDragDrop");
todo_wine
ok(droptarget_release_called == 1, "DropTarget_Release should have been called once, not %d times\n", droptarget_release_called); ok(droptarget_release_called == 1, "DropTarget_Release should have been called once, not %d times\n", droptarget_release_called);
hr = RevokeDragDrop(NULL); hr = RevokeDragDrop(NULL);
......
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