Commit 86f08862 authored by Max Kellermann's avatar Max Kellermann

playlist/EmbeddedCue: use std::string for the "cuesheet" attribute

parent 83c726a3
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
#include "fs/Traits.hxx" #include "fs/Traits.hxx"
#include "util/ASCII.hxx" #include "util/ASCII.hxx"
#include <glib.h>
#include <assert.h> #include <assert.h>
#include <string.h> #include <string.h>
...@@ -53,7 +52,7 @@ public: ...@@ -53,7 +52,7 @@ public:
/** /**
* The value of the file's "CUESHEET" tag. * The value of the file's "CUESHEET" tag.
*/ */
char *cuesheet; std::string cuesheet;
/** /**
* The offset of the next line within "cuesheet". * The offset of the next line within "cuesheet".
...@@ -64,12 +63,11 @@ public: ...@@ -64,12 +63,11 @@ public:
public: public:
EmbeddedCuePlaylist() EmbeddedCuePlaylist()
:cuesheet(nullptr), parser(nullptr) { :parser(nullptr) {
} }
virtual ~EmbeddedCuePlaylist() { virtual ~EmbeddedCuePlaylist() {
delete parser; delete parser;
g_free(cuesheet);
} }
virtual Song *NextSong() override; virtual Song *NextSong() override;
...@@ -80,9 +78,9 @@ embcue_tag_pair(const char *name, const char *value, void *ctx) ...@@ -80,9 +78,9 @@ embcue_tag_pair(const char *name, const char *value, void *ctx)
{ {
EmbeddedCuePlaylist *playlist = (EmbeddedCuePlaylist *)ctx; EmbeddedCuePlaylist *playlist = (EmbeddedCuePlaylist *)ctx;
if (playlist->cuesheet == NULL && if (playlist->cuesheet.empty() &&
StringEqualsCaseASCII(name, "cuesheet")) StringEqualsCaseASCII(name, "cuesheet"))
playlist->cuesheet = g_strdup(value); playlist->cuesheet = value;
} }
static const struct tag_handler embcue_tag_handler = { static const struct tag_handler embcue_tag_handler = {
...@@ -103,13 +101,13 @@ embcue_playlist_open_uri(const char *uri, ...@@ -103,13 +101,13 @@ embcue_playlist_open_uri(const char *uri,
const auto playlist = new EmbeddedCuePlaylist(); const auto playlist = new EmbeddedCuePlaylist();
tag_file_scan(uri, &embcue_tag_handler, playlist); tag_file_scan(uri, &embcue_tag_handler, playlist);
if (playlist->cuesheet == NULL) { if (playlist->cuesheet.empty()) {
tag_ape_scan2(uri, &embcue_tag_handler, playlist); tag_ape_scan2(uri, &embcue_tag_handler, playlist);
if (playlist->cuesheet == NULL) if (playlist->cuesheet.empty())
tag_id3_scan(uri, &embcue_tag_handler, playlist); tag_id3_scan(uri, &embcue_tag_handler, playlist);
} }
if (playlist->cuesheet == NULL) { if (playlist->cuesheet.empty()) {
/* no "CUESHEET" tag found */ /* no "CUESHEET" tag found */
delete playlist; delete playlist;
return NULL; return NULL;
...@@ -117,7 +115,7 @@ embcue_playlist_open_uri(const char *uri, ...@@ -117,7 +115,7 @@ embcue_playlist_open_uri(const char *uri,
playlist->filename = PathTraits::GetBaseUTF8(uri); playlist->filename = PathTraits::GetBaseUTF8(uri);
playlist->next = playlist->cuesheet; playlist->next = &playlist->cuesheet[0];
playlist->parser = new CueParser(); playlist->parser = new CueParser();
return playlist; return playlist;
......
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