--- xbmc/music/tags/TagLoaderTagLib.cpp.orig 2015-12-26 07:34:56.449019063 +0100 +++ xbmc/music/tags/TagLoaderTagLib.cpp 2015-12-26 08:26:13.905598496 +0100 @@ -134,48 +134,55 @@ TagLib::RIFF::WAV::File * wavFile = NULL; TagLib::RIFF::AIFF::File * aiffFile = NULL; - if (strExtension == "ape") - file = apeFile = new APE::File(stream); - else if (strExtension == "asf" || strExtension == "wmv" || strExtension == "wma") - file = asfFile = new ASF::File(stream); - else if (strExtension == "flac") - file = flacFile = new FLAC::File(stream, ID3v2::FrameFactory::instance()); - else if (strExtension == "it") - file = itFile = new IT::File(stream); - else if (strExtension == "mod" || strExtension == "module" || strExtension == "nst" || strExtension == "wow") - file = modFile = new Mod::File(stream); - else if (strExtension == "mp4" || strExtension == "m4a" || - strExtension == "m4r" || strExtension == "m4b" || - strExtension == "m4p" || strExtension == "3g2") - file = mp4File = new MP4::File(stream); - else if (strExtension == "mpc") - file = mpcFile = new MPC::File(stream); - else if (strExtension == "mp3" || strExtension == "aac") - file = mpegFile = new MPEG::File(stream, ID3v2::FrameFactory::instance()); - else if (strExtension == "s3m") - file = s3mFile = new S3M::File(stream); - else if (strExtension == "tta") - file = ttaFile = new TrueAudio::File(stream, ID3v2::FrameFactory::instance()); - else if (strExtension == "wv") - file = wvFile = new WavPack::File(stream); - else if (strExtension == "aif" || strExtension == "aiff") - file = aiffFile = new RIFF::AIFF::File(stream); - else if (strExtension == "wav") - file = wavFile = new RIFF::WAV::File(stream); - else if (strExtension == "xm") - file = xmFile = new XM::File(stream); - else if (strExtension == "ogg") - file = oggVorbisFile = new Ogg::Vorbis::File(stream); - else if (strExtension == "oga") // Leave this madness until last - oga container can have Vorbis or FLAC + try { - file = oggFlacFile = new Ogg::FLAC::File(stream); - if (!file || !file->isValid()) - { - delete file; - oggFlacFile = NULL; + if (strExtension == "ape") + file = apeFile = new APE::File(stream); + else if (strExtension == "asf" || strExtension == "wmv" || strExtension == "wma") + file = asfFile = new ASF::File(stream); + else if (strExtension == "flac") + file = flacFile = new FLAC::File(stream, ID3v2::FrameFactory::instance()); + else if (strExtension == "it") + file = itFile = new IT::File(stream); + else if (strExtension == "mod" || strExtension == "module" || strExtension == "nst" || strExtension == "wow") + file = modFile = new Mod::File(stream); + else if (strExtension == "mp4" || strExtension == "m4a" || + strExtension == "m4r" || strExtension == "m4b" || + strExtension == "m4p" || strExtension == "3g2") + file = mp4File = new MP4::File(stream); + else if (strExtension == "mpc") + file = mpcFile = new MPC::File(stream); + else if (strExtension == "mp3" || strExtension == "aac") + file = mpegFile = new MPEG::File(stream, ID3v2::FrameFactory::instance()); + else if (strExtension == "s3m") + file = s3mFile = new S3M::File(stream); + else if (strExtension == "tta") + file = ttaFile = new TrueAudio::File(stream, ID3v2::FrameFactory::instance()); + else if (strExtension == "wv") + file = wvFile = new WavPack::File(stream); + else if (strExtension == "aif" || strExtension == "aiff") + file = aiffFile = new RIFF::AIFF::File(stream); + else if (strExtension == "wav") + file = wavFile = new RIFF::WAV::File(stream); + else if (strExtension == "xm") + file = xmFile = new XM::File(stream); + else if (strExtension == "ogg") file = oggVorbisFile = new Ogg::Vorbis::File(stream); + else if (strExtension == "oga") // Leave this madness until last - oga container can have Vorbis or FLAC + { + file = oggFlacFile = new Ogg::FLAC::File(stream); + if (!file || !file->isValid()) + { + delete file; + oggFlacFile = NULL; + file = oggVorbisFile = new Ogg::Vorbis::File(stream); + } } } + catch (const std::exception& ex) + { + CLog::Log(LOGERROR, "Taglib exception: %s", ex.what()); + } if (!file || !file->isOpen()) {