aboutsummaryrefslogtreecommitdiff
path: root/src/DecoderInternal.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/DecoderInternal.cxx')
-rw-r--r--src/DecoderInternal.cxx21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/DecoderInternal.cxx b/src/DecoderInternal.cxx
index d68f7856..c5884d35 100644
--- a/src/DecoderInternal.cxx
+++ b/src/DecoderInternal.cxx
@@ -24,10 +24,31 @@
#include "MusicBuffer.hxx"
#include "MusicChunk.hxx"
+extern "C" {
+#include "tag.h"
+}
+
#include "input_stream.h"
#include <assert.h>
+decoder::~decoder()
+{
+ /* caller must flush the chunk */
+ assert(chunk == nullptr);
+
+ if (song_tag != nullptr)
+ tag_free(song_tag);
+
+ if (stream_tag != nullptr)
+ tag_free(stream_tag);
+
+ if (decoder_tag != nullptr)
+ tag_free(decoder_tag);
+
+ pcm_convert_deinit(&conv_state);
+}
+
/**
* All chunks are full of decoded data; wait for the player to free
* one.