From ea639269d8b0ae3db06c46d546d54896a8d8c89e Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 26 Jun 2019 22:24:05 +0200 Subject: [PATCH] decoder/wildmidi: throw PluginUnavailable on WildMidi_Init() error Closes https://github.com/MusicPlayerDaemon/MPD/issues/589 --- NEWS | 2 ++ src/decoder/plugins/WildmidiDecoderPlugin.cxx | 11 +++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 2d206e325..2cb980345 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,6 @@ ver 0.21.11 (not yet released) +* decoder + - wildmidi: log error if library initialization fails * output - alsa, osx: fix distortions with DSD_U32 and DoP on 32 bit CPUs * protocol 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