From d38d2bc3533dcfb661a3cbb8bd6cd9574c31ab69 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 29 Aug 2008 15:04:49 +0200 Subject: tag: optimize tag_dup(), copy item references Don't call tag_pool_get_item() for duplicating tags, just increase the item's reference counter instead. --- src/tag.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/tag.c') diff --git a/src/tag.c b/src/tag.c index 1dffeef41..d76ba5d95 100644 --- a/src/tag.c +++ b/src/tag.c @@ -313,9 +313,11 @@ struct tag *tag_dup(const struct tag *tag) ret = tag_new(); ret->time = tag->time; + ret->numOfItems = tag->numOfItems; + ret->items = xmalloc(ret->numOfItems * sizeof(ret->items[0])); for (i = 0; i < tag->numOfItems; i++) { - tag_add_item(ret, tag->items[i]->type, tag->items[i]->value); + ret->items[i] = tag_pool_dup_item(tag->items[i]); } return ret; -- cgit v1.2.3