From 52ee132d92d4a04d31bbbdeb7c6c0077bd2a2828 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 5 Sep 2013 19:11:50 +0200 Subject: TagHandler: use a TagBuilder internally Reduce heap allocator overhead. --- src/decoder/VorbisComments.cxx | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'src/decoder/VorbisComments.cxx') 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 @@ -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(); } -- cgit v1.2.3