diff options
author | Max Kellermann <max@duempel.org> | 2013-09-05 19:11:50 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2013-09-26 17:35:08 +0200 |
commit | 52ee132d92d4a04d31bbbdeb7c6c0077bd2a2828 (patch) | |
tree | 098cf4f9385693b28e41c5342fcdfae416b058dd /src/decoder/VorbisComments.cxx | |
parent | 7ca0aedcfc35c784d7ae07cd1f1e8dce684e5901 (diff) | |
download | mpd-52ee132d92d4a04d31bbbdeb7c6c0077bd2a2828.tar.gz mpd-52ee132d92d4a04d31bbbdeb7c6c0077bd2a2828.tar.xz mpd-52ee132d92d4a04d31bbbdeb7c6c0077bd2a2828.zip |
TagHandler: use a TagBuilder internally
Reduce heap allocator overhead.
Diffstat (limited to 'src/decoder/VorbisComments.cxx')
-rw-r--r-- | src/decoder/VorbisComments.cxx | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/decoder/VorbisComments.cxx b/src/decoder/VorbisComments.cxx index 48c603ea4..c8eeb09cd 100644 --- a/src/decoder/VorbisComments.cxx +++ b/src/decoder/VorbisComments.cxx @@ -23,6 +23,7 @@ #include "tag/Tag.hxx" #include "tag/TagTable.hxx" #include "tag/TagHandler.hxx" +#include "tag/TagBuilder.hxx" #include "replay_gain_info.h" #include <glib.h> @@ -138,13 +139,9 @@ vorbis_comments_scan(char **comments, Tag * vorbis_comments_to_tag(char **comments) { - Tag *tag = new Tag(); - vorbis_comments_scan(comments, &add_tag_handler, tag); - - if (tag->IsEmpty()) { - delete tag; - tag = NULL; - } - - return tag; + TagBuilder tag_builder; + vorbis_comments_scan(comments, &add_tag_handler, &tag_builder); + return tag_builder.IsEmpty() + ? nullptr + : tag_builder.Commit(); } |