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