Huw Davies : ole32: Pass a real IUnknown ptr to CoMarshalInterface.
Module: wine Branch: master Commit: 127260bb628d029c7608e96013bcec207e635249 URL: http://source.winehq.org/git/wine.git/?a=commit;h=127260bb628d029c7608e96013... Author: Huw Davies <huw(a)codeweavers.com> Date: Wed Jul 28 11:42:04 2010 +0100 ole32: Pass a real IUnknown ptr to CoMarshalInterface. --- dlls/ole32/ole2.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-) diff --git a/dlls/ole32/ole2.c b/dlls/ole32/ole2.c index f570167..a9a4885 100644 --- a/dlls/ole32/ole2.c +++ b/dlls/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);
participants (1)
-
Alexandre Julliard