Rob Shearman : ole32: Don' t release the drop target on process uninitialisation if not revoked, just release the memory.

Alexandre Julliard julliard at wine.codeweavers.com
Tue May 8 13:17:00 CDT 2007


Module: wine
Branch: master
Commit: 4cd064aeb40e6639e2e2daa1e5cb4fcd7b83127f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4cd064aeb40e6639e2e2daa1e5cb4fcd7b83127f

Author: Rob Shearman <rob at codeweavers.com>
Date:   Tue May  8 16:33:46 2007 +0100

ole32: Don't release the drop target on process uninitialisation if not revoked, just release the memory.

---

 dlls/ole32/ole2.c |   13 ++++++-------
 1 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/dlls/ole32/ole2.c b/dlls/ole32/ole2.c
index 127ef87..8ad9953 100644
--- a/dlls/ole32/ole2.c
+++ b/dlls/ole32/ole2.c
@@ -149,7 +149,7 @@ extern void OLEClipbrd_Initialize(void);
 static void            OLEDD_Initialize(void);
 static DropTargetNode* OLEDD_FindDropTarget(
                          HWND hwndOfTarget);
-static void            OLEDD_FreeDropTarget(DropTargetNode*);
+static void            OLEDD_FreeDropTarget(DropTargetNode*, BOOL);
 static LRESULT WINAPI  OLEDD_DragTrackerWindowProc(
 			 HWND   hwnd,
 			 UINT   uMsg,
@@ -355,7 +355,7 @@ HRESULT WINAPI RevokeDragDrop(
   if (dropTargetInfo==NULL)
     return DRAGDROP_E_NOTREGISTERED;
 
-  OLEDD_FreeDropTarget(dropTargetInfo);
+  OLEDD_FreeDropTarget(dropTargetInfo, TRUE);
 
   return S_OK;
 }
@@ -1896,10 +1896,10 @@ static void OLEDD_Initialize(void)
  *
  * Frees the drag and drop data structure
  */
-static void OLEDD_FreeDropTarget(DropTargetNode *dropTargetInfo)
+static void OLEDD_FreeDropTarget(DropTargetNode *dropTargetInfo, BOOL release_drop_target)
 {
   list_remove(&dropTargetInfo->entry);
-  IDropTarget_Release(dropTargetInfo->dropTarget);
+  if (release_drop_target) IDropTarget_Release(dropTargetInfo->dropTarget);
   HeapFree(GetProcessHeap(), 0, dropTargetInfo);
 }
 
@@ -1915,9 +1915,8 @@ void OLEDD_UnInitialize(void)
    */
   while (!list_empty(&targetListHead))
   {
-    DropTargetNode* curNode;
-    curNode = LIST_ENTRY(list_head(&targetListHead), DropTargetNode, entry);
-    OLEDD_FreeDropTarget(curNode);
+    DropTargetNode* curNode = LIST_ENTRY(list_head(&targetListHead), DropTargetNode, entry);
+    OLEDD_FreeDropTarget(curNode, FALSE);
   }
 }
 




More information about the wine-cvs mailing list