From 56919ae45f300e1eebe231fa105547130360db98 Mon Sep 17 00:00:00 2001 From: ehofman Date: Mon, 4 Jan 2010 14:53:26 +0000 Subject: [PATCH] MacOS returns an unsopported AL error when a file is not found, work around this. --- simgear/sound/soundmgr_openal.cxx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/simgear/sound/soundmgr_openal.cxx b/simgear/sound/soundmgr_openal.cxx index 47b43748..a9db312e 100644 --- a/simgear/sound/soundmgr_openal.cxx +++ b/simgear/sound/soundmgr_openal.cxx @@ -573,7 +573,18 @@ bool SGSoundMgr::load(string &samplepath, void **dbuf, int *fmt, ALenum error = alGetError(); if ( error != AL_NO_ERROR ) { string msg = "Failed to load wav file: "; - msg.append(alGetString(error)); + const ALchar *errorString = alGetString(error); + if (errorString) { + msg.append(errorString); + } else { + // alGetString returns NULL when an unexpected or OS specific error + // occurs: e.g. -43 on Mac when file is not found. + // In this case, alGetString() sets 'Invalid Enum' error, so + // showing with the original error number is helpful. + stringstream ss; + ss << alGetString(alGetError()) << "(" << error << ")"; + msg.append(ss.str()); + } throw sg_io_exception(msg.c_str(), sg_location(samplepath)); return false; } -- 2.39.5