Module: wine Branch: stable Commit: 3a50f8fcaa2ad77f812ebd482ee25d2c91c86e29 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3a50f8fcaa2ad77f812ebd482e... Author: Aric Stewart <aric(a)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;