winmm: Fix some memory leaks

Andrew Talbot andrew.talbot at talbotville.com
Sat Oct 13 07:23:11 CDT 2007


Changelog:
    winmm: Fix some memory leaks.

diff --git a/dlls/winmm/mmsystem.c b/dlls/winmm/mmsystem.c
index 02eabef..ec469b3 100644
--- a/dlls/winmm/mmsystem.c
+++ b/dlls/winmm/mmsystem.c
@@ -2394,16 +2394,20 @@ static	LPWINE_DRIVER	DRIVER_OpenDriver16
     if (lpDrv->d.d16.hDriver16 == 0) {cause = "Not a 16 bit driver"; goto exit;}
     lpDrv->dwFlags = WINE_GDF_16BIT;
 
-    TRACE("=> %p\n", lpDrv);
-    return lpDrv;
-
 exit:
-    HeapFree(GetProcessHeap(), 0, lpDrv);
     HeapFree(GetProcessHeap(), 0, fnA);
     HeapFree(GetProcessHeap(), 0, snA);
-    TRACE("Unable to load 16 bit module %s[%s]: %s\n", 
-          debugstr_w(fn), debugstr_w(sn), cause);
-    return NULL;
+
+    if (cause)
+    {
+        TRACE("Unable to load 16 bit module %s[%s]: %s\n",
+            debugstr_w(fn), debugstr_w(sn), cause);
+        HeapFree(GetProcessHeap(), 0, lpDrv);
+        return NULL;
+    }
+
+    TRACE("=> %p\n", lpDrv);
+    return lpDrv;
 }
 
 /******************************************************************



More information about the wine-patches mailing list