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

Alexandre Julliard julliard at winehq.org
Thu Jul 10 08:58:35 CDT 2008


Module: wine
Branch: master
Commit: 686ea70c1853aecc235143862b42e6fb09333ed4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=686ea70c1853aecc235143862b42e6fb09333ed4

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.

---

 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