Module: wine Branch: master Commit: 11f5ed28cbd625ec6f035848976264fdc5c0e189 URL: http://source.winehq.org/git/wine.git/?a=commit;h=11f5ed28cbd625ec6f03584897...
Author: Andrew Talbot andrew.talbot@talbotville.com Date: Sat Oct 13 13:23:11 2007 +0100
winmm: Fix some memory leaks.
---
dlls/winmm/mmsystem.c | 18 +++++++++++------- 1 files changed, 11 insertions(+), 7 deletions(-)
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(LPCWSTR fn, LPCWSTR sn, LPARAM lParam2) 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; }
/******************************************************************