From bdea146639b189d9b3f373c38de25cba39c9e10c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20H=C3=B6hle?= Date: Sat, 20 Feb 2010 17:27:50 +0100 Subject: [PATCH] winealsa: Do not access WAVEHDR past DriverCallback. --- dlls/winealsa.drv/wavein.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/winealsa.drv/wavein.c b/dlls/winealsa.drv/wavein.c index d6337bca80a..625e36e3152 100644 --- a/dlls/winealsa.drv/wavein.c +++ b/dlls/winealsa.drv/wavein.c @@ -292,15 +292,15 @@ static DWORD CALLBACK widRecorder(LPVOID pmt) widRecorder_ReadHeaders(wwi); /* return all buffers to the app */ - for (lpWaveHdr = wwi->lpQueuePtr; lpWaveHdr; lpWaveHdr = lpWaveHdr->lpNext) { + while (wwi->lpQueuePtr) { + lpWaveHdr = wwi->lpQueuePtr; TRACE("reset %p %p\n", lpWaveHdr, lpWaveHdr->lpNext); + wwi->lpQueuePtr = lpWaveHdr->lpNext; lpWaveHdr->dwFlags &= ~WHDR_INQUEUE; lpWaveHdr->dwFlags |= WHDR_DONE; - wwi->lpQueuePtr = lpWaveHdr->lpNext; widNotifyClient(wwi, WIM_DATA, (DWORD_PTR)lpWaveHdr, 0); } - wwi->lpQueuePtr = NULL; SetEvent(ev); break; case WINE_WM_CLOSING: