Commit 4c4fa682 authored by Max Kellermann's avatar Max Kellermann

input/Icy: use std::unique_ptr<Tag>

parent 43d2fd73
......@@ -23,16 +23,11 @@
IcyInputStream::IcyInputStream(InputStream *_input)
:ProxyInputStream(_input),
input_tag(nullptr), icy_tag(nullptr),
override_offset(0)
{
}
IcyInputStream::~IcyInputStream()
{
delete input_tag;
delete icy_tag;
}
IcyInputStream::~IcyInputStream() = default;
void
IcyInputStream::Update()
......@@ -50,18 +45,15 @@ IcyInputStream::ReadTag()
if (!IsEnabled())
return new_input_tag;
if (new_input_tag != nullptr) {
delete input_tag;
input_tag = new_input_tag;
}
if (new_input_tag != nullptr)
input_tag.reset(new_input_tag);
auto new_icy_tag = parser.ReadTag();
if (new_icy_tag != nullptr) {
delete icy_tag;
icy_tag = new_icy_tag.release();
}
const bool had_new_icy_tag = !!new_icy_tag;
if (new_icy_tag != nullptr)
icy_tag = std::move(new_icy_tag);
if (new_input_tag == nullptr && new_icy_tag == nullptr)
if (new_input_tag == nullptr && !had_new_icy_tag)
/* no change */
return nullptr;
......
......@@ -24,6 +24,8 @@
#include "IcyMetaDataParser.hxx"
#include "Compiler.h"
#include <memory>
struct Tag;
/**
......@@ -35,12 +37,12 @@ class IcyInputStream final : public ProxyInputStream {
/**
* The #Tag object ready to be requested via ReadTag().
*/
Tag *input_tag;
std::unique_ptr<Tag> input_tag;
/**
* The #Tag object ready to be requested via ReadTag().
*/
Tag *icy_tag;
std::unique_ptr<Tag> icy_tag;
offset_type override_offset;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment