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