From 63ea015c65e517979b01c8de2e744517fe05c36b Mon Sep 17 00:00:00 2001 From: Rob Shearman Date: Thu, 5 Apr 2007 11:33:52 +0100 Subject: [PATCH] ole32: Don't release the registered drop targets in OleUninitialize. Do it in DLL_PROCESS_DETACH instead. --- dlls/ole32/compobj.c | 1 + dlls/ole32/compobj_private.h | 2 ++ dlls/ole32/ole2.c | 8 +------- dlls/ole32/tests/dragdrop.c | 2 -- 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c index 330b8e10b61..af43074aa26 100644 --- a/dlls/ole32/compobj.c +++ b/dlls/ole32/compobj.c @@ -3402,6 +3402,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) case DLL_PROCESS_DETACH: if (TRACE_ON(ole)) CoRevokeMallocSpy(); + OLEDD_UnInitialize(); COMPOBJ_UninitProcess(); RPC_UnregisterAllChannelHooks(); OLE32_hInstance = 0; diff --git a/dlls/ole32/compobj_private.h b/dlls/ole32/compobj_private.h index 4a81c918e3c..479cd7667da 100644 --- a/dlls/ole32/compobj_private.h +++ b/dlls/ole32/compobj_private.h @@ -242,6 +242,8 @@ HRESULT WINAPI RunningObjectTableImpl_UnInitialize(void); /* This function decomposes a String path to a String Table containing all the elements ("\" or "subDirectory" or "Directory" or "FileName") of the path */ int FileMonikerImpl_DecomposePath(LPCOLESTR str, LPOLESTR** stringTable); +/* Drag and drop */ +void OLEDD_UnInitialize(void); /* Apartment Functions */ diff --git a/dlls/ole32/ole2.c b/dlls/ole32/ole2.c index 1f2c301fd31..908eb09d1d8 100644 --- a/dlls/ole32/ole2.c +++ b/dlls/ole32/ole2.c @@ -147,7 +147,6 @@ extern void OLEClipbrd_Initialize(void); * These are the prototypes of the utility methods used for OLE Drag n Drop */ static void OLEDD_Initialize(void); -static void OLEDD_UnInitialize(void); static DropTargetNode* OLEDD_FindDropTarget( HWND hwndOfTarget); static void OLEDD_FreeDropTarget(DropTargetNode*); @@ -253,11 +252,6 @@ void WINAPI OleUninitialize(void) */ OLEClipbrd_UnInitialize(); - /* - * Drag and Drop - */ - OLEDD_UnInitialize(); - /* * OLE shared menu */ @@ -1915,7 +1909,7 @@ static void OLEDD_FreeDropTarget(DropTargetNode *dropTargetInfo) * * Releases the OLE drag and drop data structures. */ -static void OLEDD_UnInitialize(void) +void OLEDD_UnInitialize(void) { /* * Simply empty the list. diff --git a/dlls/ole32/tests/dragdrop.c b/dlls/ole32/tests/dragdrop.c index 6401c111481..48b308cd934 100644 --- a/dlls/ole32/tests/dragdrop.c +++ b/dlls/ole32/tests/dragdrop.c @@ -136,11 +136,9 @@ START_TEST(dragdrop) ok(droptarget_release_called == 0, "DropTarget_Release shouldn't have been called\n"); OleUninitialize(); - todo_wine ok(droptarget_release_called == 0, "DropTarget_Release shouldn't have been called\n"); hr = RevokeDragDrop(GetDesktopWindow()); - todo_wine ok_ole_success(hr, "RevokeDragDrop"); ok(droptarget_release_called == 1, "DropTarget_Release should have been called once, not %d times\n", droptarget_release_called);