X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=dll%2Fwin32%2Fole32%2Fole2.c;h=a9a488594cc4c3dd251ad5a09a40c6ccbab5dfd5;hp=f570167bcf24fe34830e181bac2168dca98c7979;hb=e84aac6fb8e54423d617f3720d10365b319866ba;hpb=b06db1f05ed6a06cf407a19cd20ab2bac4d23ee6 diff --git a/dll/win32/ole32/ole2.c b/dll/win32/ole32/ole2.c index f570167bcf2..a9a488594cc 100644 --- a/dll/win32/ole32/ole2.c +++ b/dll/win32/ole32/ole2.c @@ -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);