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