aboutsummaryrefslogtreecommitdiffstats
path: root/src/tag.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-08-29 09:38:33 +0200
committerMax Kellermann <max@duempel.org>2008-08-29 09:38:33 +0200
commite5a7879892f12cb60fa2d2857b0e14d328a7d5ae (patch)
tree6b5ee152733367e1751765d00a3c90919e52b130 /src/tag.c
parentb731bbe93abd48e745d72958be0c253ade7a9d08 (diff)
downloadmpd-e5a7879892f12cb60fa2d2857b0e14d328a7d5ae.tar.gz
mpd-e5a7879892f12cb60fa2d2857b0e14d328a7d5ae.tar.xz
mpd-e5a7879892f12cb60fa2d2857b0e14d328a7d5ae.zip
tag: converted tag_item.value to a char array
The value is stored in the same memory allocation as the tag_item struct; this saves memory because we do not store the value pointer anymore. Also remove the getTagItemString()/removeTagItemString() dummies.
Diffstat (limited to 'src/tag.c')
-rw-r--r--src/tag.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/tag.c b/src/tag.c
index a856dc979..9192cb171 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -248,7 +248,6 @@ static void deleteItem(struct tag *tag, int idx)
assert(idx < tag->numOfItems);
tag->numOfItems--;
- removeTagItemString(tag->items[idx]->type, tag->items[idx]->value);
free(tag->items[idx]);
/* free(tag->items[idx].value); */
@@ -284,7 +283,6 @@ static void clearMpdTag(struct tag *tag)
int i;
for (i = 0; i < tag->numOfItems; i++) {
- removeTagItemString(tag->items[i]->type, tag->items[i]->value);
/* free(tag->items[i].value); */
free(tag->items[i]);
}
@@ -374,9 +372,10 @@ static void appendToTagItems(struct tag *tag, enum tag_type type,
tag->items = xrealloc(tag->items,
tag->numOfItems * sizeof(*tag->items));
- tag->items[i] = xmalloc(sizeof(*tag->items[i]));
+ len = strlen(duplicated);
+ tag->items[i] = xmalloc(sizeof(*tag->items[i]) + len);
tag->items[i]->type = type;
- tag->items[i]->value = getTagItemString(type, duplicated);
+ memcpy(tag->items[i]->value, duplicated, len + 1);
free(duplicated);
}