Jörg Höhle : winecoreaudio: Do not access MIDIHDR past notification callback.
Alexandre Julliard
julliard at winehq.org
Mon Mar 14 14:29:36 CDT 2011
Module: wine
Branch: master
Commit: c0d6db394479ef48fe858efbb8e0f5b86bdb2109
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c0d6db394479ef48fe858efbb8e0f5b86bdb2109
Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date: Wed Mar 9 01:51:08 2011 +0100
winecoreaudio: Do not access MIDIHDR past notification callback.
---
dlls/winecoreaudio.drv/midi.c | 13 +++++++------
1 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/dlls/winecoreaudio.drv/midi.c b/dlls/winecoreaudio.drv/midi.c
index 5e6eeae..d2b08e2 100644
--- a/dlls/winecoreaudio.drv/midi.c
+++ b/dlls/winecoreaudio.drv/midi.c
@@ -694,8 +694,8 @@ static DWORD MIDIIn_AddBuffer(WORD wDevID, LPMIDIHDR lpMidiHdr, DWORD dwSize)
LPMIDIHDR ptr;
for (ptr = sources[wDevID].lpQueueHdr;
ptr->lpNext != 0;
- ptr = (LPMIDIHDR)ptr->lpNext);
- ptr->lpNext = (struct midihdr_tag*)lpMidiHdr;
+ ptr = ptr->lpNext);
+ ptr->lpNext = lpMidiHdr;
}
LeaveCriticalSection(&midiInLock);
@@ -806,11 +806,12 @@ static DWORD MIDIIn_Reset(WORD wDevID)
EnterCriticalSection(&midiInLock);
while (sources[wDevID].lpQueueHdr) {
- sources[wDevID].lpQueueHdr->dwFlags &= ~MHDR_INQUEUE;
- sources[wDevID].lpQueueHdr->dwFlags |= MHDR_DONE;
+ LPMIDIHDR lpMidiHdr = sources[wDevID].lpQueueHdr;
+ sources[wDevID].lpQueueHdr = lpMidiHdr->lpNext;
+ lpMidiHdr->dwFlags &= ~MHDR_INQUEUE;
+ lpMidiHdr->dwFlags |= MHDR_DONE;
/* FIXME: when called from 16 bit, lpQueueHdr needs to be a segmented ptr */
- MIDI_NotifyClient(wDevID, MIM_LONGDATA, (DWORD)sources[wDevID].lpQueueHdr, dwTime);
- sources[wDevID].lpQueueHdr = (LPMIDIHDR)sources[wDevID].lpQueueHdr->lpNext;
+ MIDI_NotifyClient(wDevID, MIM_LONGDATA, (DWORD)lpMidiHdr, dwTime);
}
LeaveCriticalSection(&midiInLock);
More information about the wine-cvs
mailing list