Aric Stewart : coreaudio: Make sure Port_SendToMessageThread is not NULL before calling CFMessagePortSendRequest .

Alexandre Julliard julliard at winehq.org
Thu Oct 16 09:34:22 CDT 2008


Module: wine
Branch: stable
Commit: 3a50f8fcaa2ad77f812ebd482ee25d2c91c86e29
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3a50f8fcaa2ad77f812ebd482ee25d2c91c86e29

Author: Aric Stewart <aric at codeweavers.com>
Date:   Thu Jul 10 11:28:56 2008 +0900

coreaudio: Make sure Port_SendToMessageThread is not NULL before calling CFMessagePortSendRequest.

Prevents crashing when closing audio device during playback.
(cherry picked from commit 686ea70c1853aecc235143862b42e6fb09333ed4)

---

 dlls/winecoreaudio.drv/audio.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/dlls/winecoreaudio.drv/audio.c b/dlls/winecoreaudio.drv/audio.c
index 90d664f..549b69e 100644
--- a/dlls/winecoreaudio.drv/audio.c
+++ b/dlls/winecoreaudio.drv/audio.c
@@ -349,6 +349,9 @@ static void wodSendNotifyCompletionsMessage(WINE_WAVEOUT* wwo)
     CFDataRef data;
     UInt32 buffer;
 
+    if (!Port_SendToMessageThread)
+        return;
+
     buffer = (UInt32) wwo->woID;
 
     data = CFDataCreate(kCFAllocatorDefault, (UInt8 *)&buffer, sizeof(buffer));
@@ -368,6 +371,9 @@ static void wodSendNotifyInputCompletionsMessage(WINE_WAVEIN* wwi)
     CFDataRef data;
     UInt32 buffer;
 
+    if (!Port_SendToMessageThread)
+        return;
+
     buffer = (UInt32) wwi->wiID;
 
     data = CFDataCreate(kCFAllocatorDefault, (UInt8 *)&buffer, sizeof(buffer));
@@ -694,6 +700,9 @@ void CoreAudio_WaveRelease(void)
     /* Stop CFRunLoop in messageThread */
     TRACE("()\n");
 
+    if (!Port_SendToMessageThread)
+        return;
+
     CFMessagePortSendRequest(Port_SendToMessageThread, kStopLoopMessage, NULL, 0.0, 0.0, NULL, NULL);
     CFRelease(Port_SendToMessageThread);
     Port_SendToMessageThread = NULL;




More information about the wine-cvs mailing list