Jörg Höhle : winmm: Fix MIDI resource leaks.

Alexandre Julliard julliard at winehq.org
Thu Jan 28 11:15:34 CST 2010


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

Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date:   Wed Jan 27 18:16:55 2010 +0100

winmm: Fix MIDI resource leaks.

---

 dlls/winmm/winmm.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/dlls/winmm/winmm.c b/dlls/winmm/winmm.c
index b2caa48..1a1fdad 100644
--- a/dlls/winmm/winmm.c
+++ b/dlls/winmm/winmm.c
@@ -1772,6 +1772,10 @@ MMRESULT WINAPI midiStreamOpen(HMIDISTRM* lphMidiStrm, LPUINT lpuDeviceID,
     /* FIXME: the correct value is not allocated yet for MAPPER */
     mosm.wDeviceID  = *lpuDeviceID;
     lpwm = MIDI_OutAlloc(&hMidiOut, &dwCallback, &dwInstance, &fdwOpen, 1, &mosm);
+    if (!lpwm) {
+	HeapFree(GetProcessHeap(), 0, lpMidiStrm);
+	return MMSYSERR_NOMEM;
+    }
     lpMidiStrm->hDevice = hMidiOut;
     if (lphMidiStrm)
 	*lphMidiStrm = (HMIDISTRM)hMidiOut;
@@ -1779,6 +1783,12 @@ MMRESULT WINAPI midiStreamOpen(HMIDISTRM* lphMidiStrm, LPUINT lpuDeviceID,
     lpwm->mld.uDeviceID = *lpuDeviceID;
 
     ret = MMDRV_Open(&lpwm->mld, MODM_OPEN, (DWORD_PTR)&lpwm->mod, fdwOpen);
+    if (ret != MMSYSERR_NOERROR) {
+	MMDRV_Free(hMidiOut, &lpwm->mld);
+	HeapFree(GetProcessHeap(), 0, lpMidiStrm);
+	return ret;
+    }
+
     lpMidiStrm->hEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
     lpMidiStrm->wFlags = HIWORD(fdwOpen);
 




More information about the wine-cvs mailing list