Alexandre Julliard : odbc32: Don' t unload external libraries on process shutdown.

Alexandre Julliard julliard at winehq.org
Tue Apr 30 12:51:28 CDT 2013


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Apr 30 17:25:29 2013 +0200

odbc32: Don't unload external libraries on process shutdown.

---

 dlls/odbc32/proxyodbc.c |   32 +++++++++-----------------------
 1 files changed, 9 insertions(+), 23 deletions(-)

diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c
index c7a5038..85b3dfe 100644
--- a/dlls/odbc32/proxyodbc.c
+++ b/dlls/odbc32/proxyodbc.c
@@ -465,39 +465,25 @@ static void ODBC_ReplicateToRegistry (void)
 
 /***********************************************************************
  * DllMain [Internal] Initializes the internal 'ODBC32.DLL'.
- *
- * PARAMS
- *     hinstDLL    [I] handle to the DLL's instance
- *     fdwReason   [I]
- *     lpvReserved [I] reserved, must be NULL
- *
- * RETURNS
- *     Success: TRUE
- *     Failure: FALSE
  */
-
-BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
+BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD reason, LPVOID reserved)
 {
-    TRACE("Initializing or Finalizing proxy ODBC: %p,%x,%p\n", hinstDLL, fdwReason, lpvReserved);
+    TRACE("proxy ODBC: %p,%x,%p\n", hinstDLL, reason, reserved);
 
-    if (fdwReason == DLL_PROCESS_ATTACH)
+    switch (reason)
     {
-       TRACE("Loading ODBC...\n");
+    case DLL_PROCESS_ATTACH:
        DisableThreadLibraryCalls(hinstDLL);
        if (ODBC_LoadDriverManager())
        {
           ODBC_LoadDMFunctions();
           ODBC_ReplicateToRegistry();
        }
-    }
-    else if (fdwReason == DLL_PROCESS_DETACH)
-    {
-      TRACE("Unloading ODBC...\n");
-      if (dmHandle)
-      {
-         wine_dlclose(dmHandle,NULL,0);
-         dmHandle = NULL;
-      }
+       break;
+
+    case DLL_PROCESS_DETACH:
+      if (reserved) break;
+      if (dmHandle) wine_dlclose(dmHandle,NULL,0);
     }
 
     return TRUE;




More information about the wine-cvs mailing list