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