diff --git a/NEWS b/NEWS index 41f9169a9..de0802376 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,8 @@ ver 0.21.6 (not yet released) - fix "list" with filter expression * input - cdio_paranoia: fix build failure due to missing #include +* decoder + - opus: fix replay gain when there are no other tags * playlist - flac: fix use-after-free bug * support abstract sockets on Linux diff --git a/src/decoder/plugins/OpusDecoderPlugin.cxx b/src/decoder/plugins/OpusDecoderPlugin.cxx index 542f71540..3b3c312af 100644 --- a/src/decoder/plugins/OpusDecoderPlugin.cxx +++ b/src/decoder/plugins/OpusDecoderPlugin.cxx @@ -208,10 +208,12 @@ MPDOpusDecoder::HandleTags(const ogg_packet &packet) TagBuilder tag_builder; AddTagHandler h(tag_builder); - if (ScanOpusTags(packet.packet, packet.bytes, &rgi, h) && - !tag_builder.empty()) { - client.SubmitReplayGain(&rgi); + if (!ScanOpusTags(packet.packet, packet.bytes, &rgi, h)) + return; + client.SubmitReplayGain(&rgi); + + if (!tag_builder.empty()) { Tag tag = tag_builder.Commit(); auto cmd = client.SubmitTag(input_stream, std::move(tag)); if (cmd != DecoderCommand::NONE)