From 9d2e09851b1247d4198cf538c87924d584ba7b73 Mon Sep 17 00:00:00 2001
From: Robert Reif <reif@earthlink.net>
Date: Tue, 14 Oct 2003 20:05:42 +0000
Subject: [PATCH] Free should not happen when still playing.

---
 dlls/winmm/winmm.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/dlls/winmm/winmm.c b/dlls/winmm/winmm.c
index 1017509402f..ad4cf277005 100644
--- a/dlls/winmm/winmm.c
+++ b/dlls/winmm/winmm.c
@@ -2357,7 +2357,8 @@ UINT WINAPI waveOutClose(HWAVEOUT hWaveOut)
 	return MMSYSERR_INVALHANDLE;
 
     dwRet = MMDRV_Close(wmld, WODM_CLOSE);
-    MMDRV_Free(hWaveOut, wmld);
+    if (dwRet != WAVERR_STILLPLAYING)
+	MMDRV_Free(hWaveOut, wmld);
 
     return dwRet;
 }
@@ -2706,7 +2707,8 @@ UINT WINAPI waveInClose(HWAVEIN hWaveIn)
 	return MMSYSERR_INVALHANDLE;
 
     dwRet = MMDRV_Message(wmld, WIDM_CLOSE, 0L, 0L, TRUE);
-    MMDRV_Free(hWaveIn, wmld);
+    if (dwRet != WAVERR_STILLPLAYING)
+	MMDRV_Free(hWaveIn, wmld);
     return dwRet;
 }
 
-- 
GitLab