input/Icy: use std::unique_ptr<Tag>
This commit is contained in:
parent
43d2fd73ab
commit
4c4fa68268
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user