From 7c81707a7ea730f1d2c97a12b3768c8ab02d71b1 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 12 Apr 2014 22:56:21 +0000 Subject: [PATCH] Add error handling to wxSound under wxOSX. Don't assume that we can open any file as a sound, check for the return value from AudioServicesCreateSystemSoundID(). (this is a backport of ba4d3d31a63afc4054347d5125ef0abccbfa4faf from master) --- src/osx/core/sound.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/osx/core/sound.cpp b/src/osx/core/sound.cpp index 0f84638e29..120a807545 100644 --- a/src/osx/core/sound.cpp +++ b/src/osx/core/sound.cpp @@ -112,7 +112,13 @@ bool wxOSXAudioToolboxSoundData::Play(unsigned flags) CFStringNormalize(cfMutableString,kCFStringNormalizationFormD); wxCFRef url(CFURLCreateWithFileSystemPath(kCFAllocatorDefault, cfMutableString , kCFURLPOSIXPathStyle, false)); - AudioServicesCreateSystemSoundID(url, &m_soundID); + OSStatus err = AudioServicesCreateSystemSoundID(url, &m_soundID); + if ( err != 0 ) + { + wxLogError(_("Failed to load sound from \"%s\" (error %d)."), m_sndname, err); + return false; + } + AudioServicesAddSystemSoundCompletion( m_soundID, CFRunLoopGetCurrent(), NULL, wxOSXAudioToolboxSoundData::CompletionCallback, (void *) this ); bool sync = !(flags & wxSOUND_ASYNC);