summaryrefslogtreecommitdiff
path: root/src/output/plugins/ShoutOutputPlugin.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2017-09-08 14:45:53 +0200
committerMax Kellermann <max@musicpd.org>2017-09-08 14:45:53 +0200
commitd0f6131ba40e8336eb4f62f19f0becc5b4e6cd20 (patch)
tree1e12fbe2f01ba224032f034fdddebf1dae0cec77 /src/output/plugins/ShoutOutputPlugin.cxx
parent9cc37bdea2a55ca022c92902f943443badb94bce (diff)
output/Interface: allow Pause() to throw exception
Coverity discovered that the Pulse plugin could throw exceptions from Pause(), but that method was marked "noexcept" because its caller was not designed to catch exceptions. So instead of avoiding exceptions (by catching and logging them in each and every implementation), let's allow them, and do the catch/log game in the MPD core.
Diffstat (limited to 'src/output/plugins/ShoutOutputPlugin.cxx')
-rw-r--r--src/output/plugins/ShoutOutputPlugin.cxx12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/output/plugins/ShoutOutputPlugin.cxx b/src/output/plugins/ShoutOutputPlugin.cxx
index b2aa904b4..70c9fc284 100644
--- a/src/output/plugins/ShoutOutputPlugin.cxx
+++ b/src/output/plugins/ShoutOutputPlugin.cxx
@@ -65,7 +65,7 @@ struct ShoutOutput final : AudioOutput {
void SendTag(const Tag &tag) override;
size_t Play(const void *chunk, size_t size) override;
void Cancel() noexcept override;
- bool Pause() noexcept override;
+ bool Pause() override;
private:
void WritePage();
@@ -378,16 +378,12 @@ ShoutOutput::Play(const void *chunk, size_t size)
}
bool
-ShoutOutput::Pause() noexcept
+ShoutOutput::Pause()
{
static char silence[1020];
- try {
- encoder->Write(silence, sizeof(silence));
- WritePage();
- } catch (const std::runtime_error &) {
- return false;
- }
+ encoder->Write(silence, sizeof(silence));
+ WritePage();
return true;
}