From fc4748ae74578644128ec6ca60d7fa573fd8cf38 Mon Sep 17 00:00:00 2001
From: Andrew Eikum <aeikum@codeweavers.com>
Date: Wed, 27 Apr 2011 09:12:43 -0500
Subject: [PATCH] winealsa.drv: Properly allocate and free the WAVEFORMATEX
 returned by IsFormatSupported.

---
 dlls/winealsa.drv/Makefile.in | 2 +-
 dlls/winealsa.drv/mmdevdrv.c  | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/dlls/winealsa.drv/Makefile.in b/dlls/winealsa.drv/Makefile.in
index 541d3601202..7a74c36f1c3 100644
--- a/dlls/winealsa.drv/Makefile.in
+++ b/dlls/winealsa.drv/Makefile.in
@@ -1,5 +1,5 @@
 MODULE    = winealsa.drv
-IMPORTS   = dxguid uuid winmm user32 advapi32
+IMPORTS   = dxguid uuid winmm ole32 user32 advapi32
 EXTRALIBS = @ALSALIBS@
 
 C_SRCS = \
diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c
index b73145caec0..f041d222ed0 100644
--- a/dlls/winealsa.drv/mmdevdrv.c
+++ b/dlls/winealsa.drv/mmdevdrv.c
@@ -271,7 +271,7 @@ static ULONG WINAPI AudioClient_Release(IAudioClient *iface)
         snd_pcm_close(This->pcm_handle);
         HeapFree(GetProcessHeap(), 0, This->local_buffer);
         HeapFree(GetProcessHeap(), 0, This->hw_params);
-        HeapFree(GetProcessHeap(), 0, This->fmt);
+        CoTaskMemFree(This->fmt);
         HeapFree(GetProcessHeap(), 0, This);
     }
     return ref;
@@ -321,7 +321,7 @@ static WAVEFORMATEX *clone_format(const WAVEFORMATEX *fmt)
     else
         size = sizeof(WAVEFORMATEX);
 
-    ret = HeapAlloc(GetProcessHeap(), 0, size);
+    ret = CoTaskMemAlloc(size);
     if(!ret)
         return NULL;
 
@@ -850,7 +850,7 @@ exit:
     HeapFree(GetProcessHeap(), 0, formats);
 
     if(hr == S_OK || !out){
-        HeapFree(GetProcessHeap(), 0, closest);
+        CoTaskMemFree(closest);
         if(out)
             *out = NULL;
     }else if(closest){
-- 
GitLab