Jörg Höhle : winmm: Do not access MIDIHDR past MOM_DONE DriverCallback.
Module: wine Branch: master Commit: 63d0aeeafa24a2b62ffb917274468bd9a477ee71 URL: http://source.winehq.org/git/wine.git/?a=commit;h=63d0aeeafa24a2b62ffb917274... Author: Jörg Höhle <hoehle(a)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);
participants (1)
-
Alexandre Julliard