diff --git a/src/encoder/EncoderInterface.hxx b/src/encoder/EncoderInterface.hxx index 30ef09ea7..fca0a660d 100644 --- a/src/encoder/EncoderInterface.hxx +++ b/src/encoder/EncoderInterface.hxx @@ -102,7 +102,7 @@ public: * @param length the maximum length of the destination buffer * @return the number of bytes written to #dest */ - virtual std::size_t Read(void *dest, std::size_t length) = 0; + virtual std::size_t Read(void *dest, std::size_t length) noexcept = 0; }; class PreparedEncoder { diff --git a/src/encoder/plugins/NullEncoderPlugin.cxx b/src/encoder/plugins/NullEncoderPlugin.cxx index f34cc1ea3..3212143c0 100644 --- a/src/encoder/plugins/NullEncoderPlugin.cxx +++ b/src/encoder/plugins/NullEncoderPlugin.cxx @@ -33,7 +33,7 @@ public: buffer.Append({(const std::byte *)data, length}); } - size_t Read(void *dest, size_t length) override { + size_t Read(void *dest, size_t length) noexcept override { return buffer.Read((std::byte *)dest, length); } }; diff --git a/src/output/plugins/httpd/HttpdInternal.hxx b/src/output/plugins/httpd/HttpdInternal.hxx index f2458589e..2e6c06e8d 100644 --- a/src/output/plugins/httpd/HttpdInternal.hxx +++ b/src/output/plugins/httpd/HttpdInternal.hxx @@ -233,7 +233,7 @@ public: * Reads data from the encoder (as much as available) and * returns it as a new #page object. */ - PagePtr ReadPage(); + PagePtr ReadPage() noexcept; /** * Broadcasts a page struct to all clients. @@ -247,7 +247,7 @@ public: * * Mutext must not be locked. */ - void BroadcastFromEncoder(); + void BroadcastFromEncoder() noexcept; /** * Mutext must not be locked. diff --git a/src/output/plugins/httpd/HttpdOutputPlugin.cxx b/src/output/plugins/httpd/HttpdOutputPlugin.cxx index 9af3897ac..33d69e2b9 100644 --- a/src/output/plugins/httpd/HttpdOutputPlugin.cxx +++ b/src/output/plugins/httpd/HttpdOutputPlugin.cxx @@ -142,7 +142,7 @@ HttpdOutput::OnAccept(UniqueSocketDescriptor fd, } PagePtr -HttpdOutput::ReadPage() +HttpdOutput::ReadPage() noexcept { if (unflushed_input >= 65536) { /* we have fed a lot of input into the encoder, but it @@ -277,7 +277,7 @@ HttpdOutput::BroadcastPage(PagePtr page) noexcept } void -HttpdOutput::BroadcastFromEncoder() +HttpdOutput::BroadcastFromEncoder() noexcept { /* synchronize with the IOThread */ { diff --git a/src/output/plugins/snapcast/SnapcastOutputPlugin.cxx b/src/output/plugins/snapcast/SnapcastOutputPlugin.cxx index 1ba0b6c40..fc612735b 100644 --- a/src/output/plugins/snapcast/SnapcastOutputPlugin.cxx +++ b/src/output/plugins/snapcast/SnapcastOutputPlugin.cxx @@ -124,7 +124,7 @@ SnapcastOutput::OnAccept(UniqueSocketDescriptor fd, } static AllocatedArray -ReadEncoder(Encoder &encoder) +ReadEncoder(Encoder &encoder) noexcept { std::byte buffer[4096]; @@ -137,13 +137,7 @@ inline void SnapcastOutput::OpenEncoder(AudioFormat &audio_format) { encoder = prepared_encoder->Open(audio_format); - - try { - codec_header = ReadEncoder(*encoder); - } catch (...) { - delete encoder; - throw; - } + codec_header = ReadEncoder(*encoder); unflushed_input = 0; }