From 1732166328f3e2db3d959b60bbe46f85d36d8e77 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 24 Dec 2013 10:52:30 +0100 Subject: OutputThread: handle failing ReplayGainFilter::Open() Since opening the PcmVolume object can now fail, this case must be handled. --- src/OutputThread.cxx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/OutputThread.cxx b/src/OutputThread.cxx index c65309503..1a8c70196 100644 --- a/src/OutputThread.cxx +++ b/src/OutputThread.cxx @@ -96,10 +96,16 @@ ao_filter_open(struct audio_output *ao, AudioFormat &format, assert(format.IsValid()); /* the replay_gain filter cannot fail here */ - if (ao->replay_gain_filter != nullptr) - ao->replay_gain_filter->Open(format, error_r); - if (ao->other_replay_gain_filter != nullptr) - ao->other_replay_gain_filter->Open(format, error_r); + if (ao->replay_gain_filter != nullptr && + !ao->replay_gain_filter->Open(format, error_r).IsDefined()) + return AudioFormat::Undefined(); + + if (ao->other_replay_gain_filter != nullptr && + !ao->other_replay_gain_filter->Open(format, error_r).IsDefined()) { + if (ao->replay_gain_filter != nullptr) + ao->replay_gain_filter->Close(); + return AudioFormat::Undefined(); + } const AudioFormat af = ao->filter->Open(format, error_r); if (!af.IsDefined()) { -- cgit v1.2.3