ole32: Pass a real IUnknown ptr to CoMarshalInterface.

This commit is contained in:
Huw Davies 2010-07-28 11:42:04 +01:00 committed by Alexandre Julliard
parent 8068d4ee22
commit 127260bb62

View File

@ -409,6 +409,7 @@ HRESULT WINAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget)
HRESULT hr;
IStream *stream;
HANDLE map;
IUnknown *unk;
TRACE("(%p,%p)\n", hwnd, pDropTarget);
@ -449,7 +450,15 @@ HRESULT WINAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget)
hr = CreateStreamOnHGlobal(NULL, TRUE, &stream);
if(FAILED(hr)) return hr;
hr = CoMarshalInterface(stream, &IID_IDropTarget, (IUnknown*)pDropTarget, MSHCTX_LOCAL, NULL, MSHLFLAGS_TABLESTRONG);
hr = IDropTarget_QueryInterface(pDropTarget, &IID_IUnknown, (void**)&unk);
if(FAILED(hr))
{
IStream_Release(stream);
return hr;
}
hr = CoMarshalInterface(stream, &IID_IDropTarget, unk, MSHCTX_LOCAL, NULL, MSHLFLAGS_TABLESTRONG);
IUnknown_Release(unk);
if(SUCCEEDED(hr))
{
hr = create_map_from_stream(stream, &map);