Module: wine Branch: master Commit: 127260bb628d029c7608e96013bcec207e635249 URL: http://source.winehq.org/git/wine.git/?a=commit;h=127260bb628d029c7608e96013...
Author: Huw Davies huw@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);