aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-02-27 09:02:13 +0100
committerMax Kellermann <max@duempel.org>2009-02-27 09:02:13 +0100
commitc1ab2d06aaa11823c0310e513b11654cfa67df02 (patch)
tree5671fd96b89ed9446f7aac7a7233dcbadb859a94
parent75c2029b1c3b59a5922eebc7cf91607758823c45 (diff)
downloadmpd-c1ab2d06aaa11823c0310e513b11654cfa67df02.tar.gz
mpd-c1ab2d06aaa11823c0310e513b11654cfa67df02.tar.xz
mpd-c1ab2d06aaa11823c0310e513b11654cfa67df02.zip
tag: make tag.num_items unsigned
There's no point in declaring num_items as a uint8_t, it doesn't save any space, due to padding. This allows us to lift the articial "255 items" limitation.
-rw-r--r--src/locate.c3
-rw-r--r--src/tag.c17
-rw-r--r--src/tag.h2
3 files changed, 6 insertions, 16 deletions
diff --git a/src/locate.c b/src/locate.c
index 653c53009..7ddc06721 100644
--- a/src/locate.c
+++ b/src/locate.c
@@ -141,7 +141,6 @@ locate_item_free(struct locate_item *item)
static bool
locate_tag_search(const struct song *song, enum tag_type type, const char *str)
{
- int i;
char *duplicate;
bool ret = false;
bool visited_types[TAG_NUM_OF_ITEM_TYPES];
@@ -165,7 +164,7 @@ locate_tag_search(const struct song *song, enum tag_type type, const char *str)
memset(visited_types, 0, sizeof(visited_types));
- for (i = 0; i < song->tag->num_items && !ret; i++) {
+ for (unsigned i = 0; i < song->tag->num_items && !ret; i++) {
visited_types[song->tag->items[i]->type] = true;
if (type != LOCATE_TAG_ANY_TYPE &&
song->tag->items[i]->type != type) {
diff --git a/src/tag.c b/src/tag.c
index ba1f333f7..0e4b92373 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -246,7 +246,7 @@ struct tag *tag_new(void)
return ret;
}
-static void tag_delete_item(struct tag *tag, int idx)
+static void tag_delete_item(struct tag *tag, unsigned idx)
{
assert(idx < tag->num_items);
tag->num_items--;
@@ -270,9 +270,7 @@ static void tag_delete_item(struct tag *tag, int idx)
void tag_clear_items_by_type(struct tag *tag, enum tag_type type)
{
- int i;
-
- for (i = 0; i < tag->num_items; i++) {
+ for (unsigned i = 0; i < tag->num_items; i++) {
if (tag->items[i]->type == type) {
tag_delete_item(tag, i);
/* decrement since when just deleted this node */
@@ -304,7 +302,6 @@ void tag_free(struct tag *tag)
struct tag *tag_dup(const struct tag *tag)
{
struct tag *ret;
- int i;
if (!tag)
return NULL;
@@ -315,7 +312,7 @@ struct tag *tag_dup(const struct tag *tag)
ret->items = ret->num_items > 0 ? g_malloc(items_size(tag)) : NULL;
g_mutex_lock(tag_pool_lock);
- for (i = 0; i < tag->num_items; i++)
+ for (unsigned i = 0; i < tag->num_items; i++)
ret->items[i] = tag_pool_dup_item(tag->items[i]);
g_mutex_unlock(tag_pool_lock);
@@ -388,8 +385,6 @@ bool tag_has_type(const struct tag *tag, enum tag_type type)
bool tag_equal(const struct tag *tag1, const struct tag *tag2)
{
- int i;
-
if (tag1 == NULL && tag2 == NULL)
return true;
else if (!tag1 || !tag2)
@@ -401,7 +396,7 @@ bool tag_equal(const struct tag *tag1, const struct tag *tag2)
if (tag1->num_items != tag2->num_items)
return false;
- for (i = 0; i < tag1->num_items; i++) {
+ for (unsigned i = 0; i < tag1->num_items; i++) {
if (tag1->items[i]->type != tag2->items[i]->type)
return false;
if (strcmp(tag1->items[i]->value, tag2->items[i]->value)) {
@@ -566,9 +561,5 @@ void tag_add_item_n(struct tag *tag, enum tag_type itemType,
if (!value || !len)
return;
- /* we can't hold more than 255 items */
- if (tag->num_items == 255)
- return;
-
tag_add_item_internal(tag, itemType, value, len);
}
diff --git a/src/tag.h b/src/tag.h
index 0348ad47a..9f1549be4 100644
--- a/src/tag.h
+++ b/src/tag.h
@@ -58,7 +58,7 @@ struct tag_item {
struct tag {
int time;
struct tag_item **items;
- uint8_t num_items;
+ unsigned num_items;
};
struct tag *tag_ape_load(const char *file);