Huw Davies : ole32: Pass a real IUnknown ptr to CoMarshalInterface.
Alexandre Julliard
julliard at winehq.org
Wed Jul 28 10:45:08 CDT 2010
Module: wine
Branch: master
Commit: 127260bb628d029c7608e96013bcec207e635249
URL: http://source.winehq.org/git/wine.git/?a=commit;h=127260bb628d029c7608e96013bcec207e635249
Author: Huw Davies <huw at 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);
More information about the wine-cvs
mailing list