From 22e40b61cc0166dcda15b7146724928368201b07 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Mon, 6 Oct 2008 18:48:45 +0200
Subject: song: don't make the struct packed

The "packed" attribute may have negative side effects on performance.
Remove the "packed" attribute, and increase the size of "song.url" to
a multiple of the machine word size.
---
 src/song.c | 2 +-
 src/song.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

(limited to 'src')

diff --git a/src/song.c b/src/song.c
index 3081dec4e..6d689c5c8 100644
--- a/src/song.c
+++ b/src/song.c
@@ -32,7 +32,7 @@ Song *
 song_alloc(const char *url, enum song_type type, struct _Directory *parent)
 {
 	size_t urllen = strlen(url);
-	Song *song = xmalloc(sizeof(Song) + urllen);
+	Song *song = xmalloc(sizeof(*song) - sizeof(song->url) + urllen + 1);
 
 	song->tag = NULL;
 	memcpy(song->url, url, urllen + 1);
diff --git a/src/song.h b/src/song.h
index e2e74928b..c20bae270 100644
--- a/src/song.h
+++ b/src/song.h
@@ -40,7 +40,7 @@ typedef struct _Song {
 	struct tag *tag;
 	struct _Directory *parentDir;
 	time_t mtime;
-	char url[1];
+	char url[sizeof(size_t)];
 } mpd_packed Song;
 
 Song *
-- 
cgit v1.2.3