aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-01-14 14:11:07 +0100
committerMax Kellermann <max@duempel.org>2014-01-14 14:11:07 +0100
commit46debfb8b54f19411376d2b486f51b48aa9b8cf9 (patch)
tree2f4934eb4a82059cda4bcbe483ca6ad6b388542f /src
parent9a4b572d3461ab8124b4f5e8e2a199907f7efd2f (diff)
downloadmpd-46debfb8b54f19411376d2b486f51b48aa9b8cf9.tar.gz
mpd-46debfb8b54f19411376d2b486f51b48aa9b8cf9.tar.xz
mpd-46debfb8b54f19411376d2b486f51b48aa9b8cf9.zip
db/upnp/Object: disallow copying, always move
Reduce bloat.
Diffstat (limited to 'src')
-rw-r--r--src/db/UpnpDatabasePlugin.cxx9
-rw-r--r--src/db/upnp/Directory.cxx2
-rw-r--r--src/db/upnp/Directory.hxx4
-rw-r--r--src/db/upnp/Object.hxx4
4 files changed, 11 insertions, 8 deletions
diff --git a/src/db/UpnpDatabasePlugin.cxx b/src/db/UpnpDatabasePlugin.cxx
index 436b22a80..92d520bba 100644
--- a/src/db/UpnpDatabasePlugin.cxx
+++ b/src/db/UpnpDatabasePlugin.cxx
@@ -488,7 +488,7 @@ UpnpDatabase::ReadNode(ContentDirectoryService *server,
return false;
if (dirbuf.objects.size() == 1) {
- dirent = dirbuf.objects[0];
+ dirent = std::move(dirbuf.objects[0]);
} else {
error.Format(upnp_domain, "Bad resource");
return false;
@@ -542,8 +542,7 @@ UpnpDatabase::Namei(ContentDirectoryService* server,
return false;
// Look for the name in the sub-container list
- const UPnPDirObject *child =
- dirbuf.FindObject(vpath[i].c_str());
+ UPnPDirObject *child = dirbuf.FindObject(vpath[i].c_str());
if (child == nullptr)
break;
@@ -558,7 +557,7 @@ UpnpDatabase::Namei(ContentDirectoryService* server,
// The last element in the path was found and it's
// a container, we're done
oobjid = objid;
- odirent = *child;
+ odirent = std::move(*child);
return true;
}
break;
@@ -568,7 +567,7 @@ UpnpDatabase::Namei(ContentDirectoryService* server,
// else it does not exist
if (i == vpath.size() - 1) {
oobjid = objid;
- odirent = *child;
+ odirent = std::move(*child);
return true;
} else {
error.Format(db_domain, DB_NOT_FOUND,
diff --git a/src/db/upnp/Directory.cxx b/src/db/upnp/Directory.cxx
index 8a6708a67..35d556c28 100644
--- a/src/db/upnp/Directory.cxx
+++ b/src/db/upnp/Directory.cxx
@@ -151,7 +151,7 @@ protected:
{
if ((!strcmp(name, "container") || !strcmp(name, "item")) &&
checkobjok())
- m_dir.objects.push_back(m_tobj);
+ m_dir.objects.push_back(std::move(m_tobj));
m_path.pop_back();
}
diff --git a/src/db/upnp/Directory.hxx b/src/db/upnp/Directory.hxx
index 3324b2232..80b52ff2b 100644
--- a/src/db/upnp/Directory.hxx
+++ b/src/db/upnp/Directory.hxx
@@ -37,8 +37,8 @@ public:
std::vector<UPnPDirObject> objects;
gcc_pure
- const UPnPDirObject *FindObject(const char *name) const {
- for (const auto &o : objects)
+ UPnPDirObject *FindObject(const char *name) {
+ for (auto &o : objects)
if (o.name == name)
return &o;
diff --git a/src/db/upnp/Object.hxx b/src/db/upnp/Object.hxx
index 1346c15d4..1d32d0401 100644
--- a/src/db/upnp/Object.hxx
+++ b/src/db/upnp/Object.hxx
@@ -70,6 +70,10 @@ public:
*/
int duration;
+ UPnPDirObject() = default;
+ UPnPDirObject(UPnPDirObject &&) = default;
+ UPnPDirObject &operator=(UPnPDirObject &&) = default;
+
/** Get named property
* @param property name (e.g. upnp:artist, upnp:album,
* upnp:originalTrackNumber, upnp:genre). Use m_title instead