diff options
-rw-r--r-- | src/db/Directory.cxx | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/src/db/Directory.cxx b/src/db/Directory.cxx index 04bdfa88f..01e147eff 100644 --- a/src/db/Directory.cxx +++ b/src/db/Directory.cxx @@ -86,20 +86,11 @@ Directory::CreateChild(const char *name_utf8) assert(name_utf8 != nullptr); assert(*name_utf8 != 0); - char *allocated; - const char *path_utf8; - if (IsRoot()) { - allocated = nullptr; - path_utf8 = name_utf8; - } else { - allocated = g_strconcat(GetPath(), - "/", name_utf8, nullptr); - path_utf8 = allocated; - } - - Directory *child = new Directory(path_utf8, this); - g_free(allocated); + std::string path_utf8 = IsRoot() + ? std::string(name_utf8) + : PathTraitsUTF8::Build(GetPath(), name_utf8); + Directory *child = new Directory(std::move(path_utf8), this); list_add_tail(&child->siblings, &children); return child; } |