aboutsummaryrefslogtreecommitdiffstats
path: root/src/Directory.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Directory.cxx')
-rw-r--r--src/Directory.cxx28
1 files changed, 12 insertions, 16 deletions
diff --git a/src/Directory.cxx b/src/Directory.cxx
index b2942588e..750fee896 100644
--- a/src/Directory.cxx
+++ b/src/Directory.cxx
@@ -25,6 +25,7 @@
#include "SongSort.hxx"
#include "Song.hxx"
#include "fs/Traits.hxx"
+#include "util/VarSize.hxx"
#include "util/Error.hxx"
extern "C" {
@@ -42,14 +43,9 @@ Directory::Allocate(const char *path)
{
assert(path != nullptr);
- const size_t path_size = strlen(path) + 1;
- Directory *directory =
- (Directory *)g_malloc0(sizeof(*directory)
- - sizeof(directory->path)
- + path_size);
- new(directory) Directory(path);
-
- return directory;
+ return NewVarSize<Directory>(sizeof(Directory::path),
+ strlen(path) + 1,
+ path);
}
Directory::Directory()
@@ -61,6 +57,7 @@ Directory::Directory()
}
Directory::Directory(const char *_path)
+ :mtime(0), have_stat(false)
{
INIT_LIST_HEAD(&children);
INIT_LIST_HEAD(&songs);
@@ -95,8 +92,7 @@ Directory::NewGeneric(const char *path, Directory *parent)
void
Directory::Free()
{
- this->Directory::~Directory();
- g_free(this);
+ DeleteVarSize(this);
}
void
@@ -114,7 +110,7 @@ Directory::GetName() const
{
assert(!IsRoot());
- return PathTraits::GetBaseUTF8(path);
+ return PathTraitsUTF8::GetBase(path);
}
Directory *
@@ -178,7 +174,7 @@ Directory::LookupDirectory(const char *uri)
if (isRootDirectory(uri))
return this;
- char *duplicated = g_strdup(uri), *name = duplicated;
+ char *duplicated = xstrdup(uri), *name = duplicated;
Directory *d = this;
while (1) {
@@ -198,7 +194,7 @@ Directory::LookupDirectory(const char *uri)
name = slash + 1;
}
- g_free(duplicated);
+ free(duplicated);
return d;
}
@@ -248,7 +244,7 @@ Directory::LookupSong(const char *uri)
assert(holding_db_lock());
assert(uri != nullptr);
- duplicated = g_strdup(uri);
+ duplicated = xstrdup(uri);
base = strrchr(duplicated, '/');
Directory *d = this;
@@ -256,7 +252,7 @@ Directory::LookupSong(const char *uri)
*base++ = 0;
d = d->LookupDirectory(duplicated);
if (d == nullptr) {
- g_free(duplicated);
+ free(duplicated);
return nullptr;
}
} else
@@ -265,7 +261,7 @@ Directory::LookupSong(const char *uri)
Song *song = d->FindSong(base);
assert(song == nullptr || song->parent == d);
- g_free(duplicated);
+ free(duplicated);
return song;
}