aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/SongFilter.cxx4
-rw-r--r--src/SongFilter.hxx10
-rw-r--r--src/db/Selection.cxx7
-rw-r--r--src/db/plugins/ProxyDatabasePlugin.cxx8
-rw-r--r--src/db/plugins/upnp/UpnpDatabasePlugin.cxx4
5 files changed, 18 insertions, 15 deletions
diff --git a/src/SongFilter.cxx b/src/SongFilter.cxx
index d979267ef..5e24b143a 100644
--- a/src/SongFilter.cxx
+++ b/src/SongFilter.cxx
@@ -300,12 +300,12 @@ SongFilter::HasOtherThanBase() const
return false;
}
-std::string
+const char *
SongFilter::GetBase() const
{
for (const auto &i : items)
if (i.GetTag() == LOCATE_TAG_BASE_TYPE)
return i.GetValue();
- return std::string();
+ return nullptr;
}
diff --git a/src/SongFilter.hxx b/src/SongFilter.hxx
index 8801f35ea..ba5433df8 100644
--- a/src/SongFilter.hxx
+++ b/src/SongFilter.hxx
@@ -76,8 +76,8 @@ public:
return fold_case;
}
- const std::string &GetValue() const {
- return value;
+ const char *GetValue() const {
+ return value.c_str();
}
gcc_pure gcc_nonnull(2)
@@ -149,11 +149,11 @@ public:
bool HasOtherThanBase() const;
/**
- * Returns the "base" specification (if there is one) or an
- * empty string.
+ * Returns the "base" specification (if there is one) or
+ * nullptr.
*/
gcc_pure
- std::string GetBase() const;
+ const char *GetBase() const;
};
/**
diff --git a/src/db/Selection.cxx b/src/db/Selection.cxx
index 4a4016485..4c941823a 100644
--- a/src/db/Selection.cxx
+++ b/src/db/Selection.cxx
@@ -26,8 +26,11 @@ DatabaseSelection::DatabaseSelection(const char *_uri, bool _recursive,
{
/* optimization: if the caller didn't specify a base URI, pick
the one from SongFilter */
- if (uri.empty() && filter != nullptr)
- uri = filter->GetBase();
+ if (uri.empty() && filter != nullptr) {
+ auto base = filter->GetBase();
+ if (base != nullptr)
+ uri = base;
+ }
}
bool
diff --git a/src/db/plugins/ProxyDatabasePlugin.cxx b/src/db/plugins/ProxyDatabasePlugin.cxx
index 67c651e83..78ad7f603 100644
--- a/src/db/plugins/ProxyDatabasePlugin.cxx
+++ b/src/db/plugins/ProxyDatabasePlugin.cxx
@@ -263,18 +263,18 @@ SendConstraints(mpd_connection *connection, const SongFilter::Item &item)
return mpd_search_add_base_constraint(connection,
MPD_OPERATOR_DEFAULT,
- item.GetValue().c_str());
+ item.GetValue());
#endif
case LOCATE_TAG_FILE_TYPE:
return mpd_search_add_uri_constraint(connection,
MPD_OPERATOR_DEFAULT,
- item.GetValue().c_str());
+ item.GetValue());
case LOCATE_TAG_ANY_TYPE:
return mpd_search_add_any_tag_constraint(connection,
MPD_OPERATOR_DEFAULT,
- item.GetValue().c_str());
+ item.GetValue());
default:
tag = Convert(TagType(item.GetTag()));
@@ -284,7 +284,7 @@ SendConstraints(mpd_connection *connection, const SongFilter::Item &item)
return mpd_search_add_tag_constraint(connection,
MPD_OPERATOR_DEFAULT,
tag,
- item.GetValue().c_str());
+ item.GetValue());
}
}
diff --git a/src/db/plugins/upnp/UpnpDatabasePlugin.cxx b/src/db/plugins/upnp/UpnpDatabasePlugin.cxx
index 9d2d00eb6..035c310f9 100644
--- a/src/db/plugins/upnp/UpnpDatabasePlugin.cxx
+++ b/src/db/plugins/upnp/UpnpDatabasePlugin.cxx
@@ -303,7 +303,7 @@ UpnpDatabase::SearchSongs(const ContentDirectoryService &server,
} else {
cond += " = ";
}
- dquote(cond, item.GetValue().c_str());
+ dquote(cond, item.GetValue());
}
cond += ')';
}
@@ -339,7 +339,7 @@ UpnpDatabase::SearchSongs(const ContentDirectoryService &server,
} else {
cond += " = ";
}
- dquote(cond, item.GetValue().c_str());
+ dquote(cond, item.GetValue());
}
}