From a0478f98af3fb53168bdffa666894dde87cfe597 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 9 Aug 2012 19:44:10 +0200 Subject: Directory: move code to directory_allocate() --- src/Directory.cxx | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/Directory.cxx b/src/Directory.cxx index 326fa24e9..eab526b38 100644 --- a/src/Directory.cxx +++ b/src/Directory.cxx @@ -37,24 +37,34 @@ extern "C" { #include #include -struct directory * -directory_new(const char *path, struct directory *parent) +static directory * +directory_allocate(const char *path) { - size_t pathlen = strlen(path); - assert(path != NULL); - assert((*path == 0) == (parent == NULL)); - struct directory *directory = + const size_t path_size = strlen(path) + 1; + directory *directory = (struct directory *)g_malloc0(sizeof(*directory) - sizeof(directory->path) - + pathlen + 1); + + path_size); INIT_LIST_HEAD(&directory->children); INIT_LIST_HEAD(&directory->songs); INIT_LIST_HEAD(&directory->playlists); + memcpy(directory->path, path, path_size); + + return directory; +} + +struct directory * +directory_new(const char *path, struct directory *parent) +{ + assert(path != NULL); + assert((*path == 0) == (parent == NULL)); + + directory *directory = directory_allocate(path); + directory->parent = parent; - memcpy(directory->path, path, pathlen + 1); return directory; } -- cgit v1.2.3