diff options
author | Max Kellermann <max@duempel.org> | 2008-08-29 09:38:33 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-08-29 09:38:33 +0200 |
commit | e5a7879892f12cb60fa2d2857b0e14d328a7d5ae (patch) | |
tree | 6b5ee152733367e1751765d00a3c90919e52b130 /src | |
parent | b731bbe93abd48e745d72958be0c253ade7a9d08 (diff) | |
download | mpd-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 '')
-rw-r--r-- | src/tag.c | 7 | ||||
-rw-r--r-- | src/tag.h | 4 | ||||
-rw-r--r-- | src/tagTracker.c | 10 | ||||
-rw-r--r-- | src/tagTracker.h | 4 |
4 files changed, 5 insertions, 20 deletions
@@ -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); } @@ -41,8 +41,8 @@ extern const char *mpdTagItemKeys[]; struct tag_item { enum tag_type type; - char *value; -}; + char value[1]; +} mpd_unused; struct tag { int time; diff --git a/src/tagTracker.c b/src/tagTracker.c index af94db1c1..e6dc6fbe6 100644 --- a/src/tagTracker.c +++ b/src/tagTracker.c @@ -37,16 +37,6 @@ struct visited { static struct visited *visited_heads[TAG_NUM_OF_ITEM_TYPES]; static unsigned num_visited[TAG_NUM_OF_ITEM_TYPES]; -char *getTagItemString(int type mpd_unused, char *string) -{ - return xstrdup(string); -} - -void removeTagItemString(int type mpd_unused, char *string) -{ - free(string); -} - static int visit_tag_items(int fd mpd_unused, Song *song, void *data) { enum tag_type type = (enum tag_type)(size_t)data; diff --git a/src/tagTracker.h b/src/tagTracker.h index 84506426e..2edb5aad0 100644 --- a/src/tagTracker.h +++ b/src/tagTracker.h @@ -19,10 +19,6 @@ #ifndef TAG_TRACKER_H #define TAG_TRACKER_H -char *getTagItemString(int type, char *string); - -void removeTagItemString(int type, char *string); - int getNumberOfTagItems(int type); void printMemorySavedByTagTracker(void); |