Jörg Höhle : winmm: Do not access MIDIHDR past MOM_DONE DriverCallback.
Alexandre Julliard
julliard at winehq.org
Mon Feb 22 08:46:56 CST 2010
Module: wine
Branch: master
Commit: 63d0aeeafa24a2b62ffb917274468bd9a477ee71
URL: http://source.winehq.org/git/wine.git/?a=commit;h=63d0aeeafa24a2b62ffb917274468bd9a477ee71
Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date: Tue Feb 16 22:10:03 2010 +0100
winmm: Do not access MIDIHDR past MOM_DONE DriverCallback.
---
dlls/winmm/winmm.c | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/dlls/winmm/winmm.c b/dlls/winmm/winmm.c
index 46a3c06..1898e28 100644
--- a/dlls/winmm/winmm.c
+++ b/dlls/winmm/winmm.c
@@ -1485,13 +1485,15 @@ static BOOL MMSYSTEM_MidiStream_MessageHandler(WINE_MIDIStream* lpMidiStrm, LPWI
/* this is not quite what MS doc says... */
midiOutReset(lpMidiStrm->hDevice);
/* empty list of already submitted buffers */
- for (lpMidiHdr = lpMidiStrm->lpMidiHdr; lpMidiHdr; lpMidiHdr = lpMidiHdr->lpNext) {
- lpMidiHdr->dwFlags |= MHDR_DONE;
- lpMidiHdr->dwFlags &= ~MHDR_INQUEUE;
+ for (lpMidiHdr = lpMidiStrm->lpMidiHdr; lpMidiHdr; ) {
+ LPMIDIHDR lphdr = lpMidiHdr;
+ lpMidiHdr = lpMidiHdr->lpNext;
+ lphdr->dwFlags |= MHDR_DONE;
+ lphdr->dwFlags &= ~MHDR_INQUEUE;
DriverCallback(lpwm->mod.dwCallback, lpMidiStrm->wFlags,
(HDRVR)lpMidiStrm->hDevice, MM_MOM_DONE,
- lpwm->mod.dwInstance, (DWORD_PTR)lpMidiHdr, 0);
+ lpwm->mod.dwInstance, (DWORD_PTR)lphdr, 0);
}
lpMidiStrm->lpMidiHdr = 0;
SetEvent(lpMidiStrm->hEvent);
More information about the wine-cvs
mailing list