diff options
Diffstat (limited to 'src/decoder/plugins/WildmidiDecoderPlugin.cxx')
-rw-r--r-- | src/decoder/plugins/WildmidiDecoderPlugin.cxx | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/decoder/plugins/WildmidiDecoderPlugin.cxx b/src/decoder/plugins/WildmidiDecoderPlugin.cxx index 37bb026e2..a1dbee4f2 100644 --- a/src/decoder/plugins/WildmidiDecoderPlugin.cxx +++ b/src/decoder/plugins/WildmidiDecoderPlugin.cxx @@ -21,6 +21,7 @@ #include "../DecoderAPI.hxx" #include "tag/Handler.hxx" #include "util/Domain.hxx" +#include "util/ScopeExit.hxx" #include "util/StringFormat.hxx" #include "fs/AllocatedPath.hxx" #include "fs/FileSystem.hxx" @@ -49,8 +50,14 @@ wildmidi_init(const ConfigBlock &block) utf8.c_str())); } - return WildMidi_Init(path.c_str(), wildmidi_audio_format.sample_rate, - 0) == 0; + WildMidi_ClearError(); + AtScopeExit() { WildMidi_ClearError(); }; + + if (WildMidi_Init(path.c_str(), wildmidi_audio_format.sample_rate, + 0) != 0) + throw PluginUnavailable(WildMidi_GetError()); + + return true; } static void |