Module: wine Branch: master Commit: 4cd064aeb40e6639e2e2daa1e5cb4fcd7b83127f URL: http://source.winehq.org/git/wine.git/?a=commit;h=4cd064aeb40e6639e2e2daa1e5...
Author: Rob Shearman rob@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); } }