From 292d7c3fdfa1732a3b4ff7b9db3075a063311819 Mon Sep 17 00:00:00 2001 From: Denis Krjuchkov Date: Thu, 24 Jan 2013 00:48:14 +0600 Subject: Path: ToUTF() returns std::string --- src/ExcludeList.cxx | 6 +++--- src/fs/Path.cxx | 12 ++++++++++++ src/fs/Path.hxx | 13 +++++-------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/ExcludeList.cxx b/src/ExcludeList.cxx index 69a04d5a8..50cdc1c0e 100644 --- a/src/ExcludeList.cxx +++ b/src/ExcludeList.cxx @@ -37,10 +37,10 @@ ExcludeList::LoadFile(const Path &path_fs) FILE *file = fopen(path_fs.c_str(), "r"); if (file == NULL) { if (errno != ENOENT) { - char *path_utf8 = path_fs.ToUTF8(); + const char *msg = g_strerror(errno); + const auto path_utf8 = path_fs.ToUTF8(); g_debug("Failed to open %s: %s", - path_utf8, g_strerror(errno)); - g_free(path_utf8); + path_utf8.c_str(), msg); } return false; diff --git a/src/fs/Path.cxx b/src/fs/Path.cxx index 80b41cbaa..393cb3038 100644 --- a/src/fs/Path.cxx +++ b/src/fs/Path.cxx @@ -38,6 +38,18 @@ static char *fs_charset; +std::string Path::ToUTF8() const +{ + if (value == nullptr) + return std::string(); + char *path_utf8 = fs_charset_to_utf8(value); + if (path_utf8 == nullptr) + return std::string(); + std::string result = value; + g_free(path_utf8); + return value; +} + char * fs_charset_to_utf8(const char *path_fs) { diff --git a/src/fs/Path.hxx b/src/fs/Path.hxx index 24f1d5e19..926b6eafb 100644 --- a/src/fs/Path.hxx +++ b/src/fs/Path.hxx @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -250,15 +251,11 @@ public: } /** - * Convert the path to UTF-8. The caller is responsible for - * freeing the return value with g_free(). Returns nullptr on - * error. + * Convert the path to UTF-8. + * Returns empty string on error or if this instance is "nulled" + * (#IsNull returns true). */ - char *ToUTF8() const { - return value != nullptr - ? fs_charset_to_utf8(value) - : nullptr; - } + std::string ToUTF8() const; }; #endif -- cgit v1.2.3