db/upnp: getTagValue() returns string pointer

Reduce bloat.
This commit is contained in:
Max Kellermann 2014-01-14 13:42:08 +01:00
parent ddc75cc46b
commit 9a4b572d34
1 changed files with 13 additions and 19 deletions

View File

@ -280,28 +280,22 @@ UpnpDatabase::GetSong(const char *uri, Error &error) const
/**
* Retrieve the value for an MPD tag from an object entry.
*/
static bool
getTagValue(const UPnPDirObject &dirent, TagType tag,
std::string &tagvalue)
gcc_pure
static const char *
getTagValue(const UPnPDirObject &dirent, TagType tag)
{
if (tag == TAG_TITLE) {
if (!dirent.m_title.empty()) {
tagvalue = dirent.m_title;
return true;
}
return false;
if (!dirent.m_title.empty())
return dirent.m_title.c_str();
return nullptr;
}
const char *name = tag_table_lookup(upnp_tags, tag);
if (name == nullptr)
return false;
return nullptr;
const char *value = dirent.getprop(name);
if (value == nullptr)
return false;
tagvalue = value;
return true;
return dirent.getprop(name);
}
/**
@ -818,12 +812,12 @@ UpnpDatabase::VisitUniqueTags(const DatabaseSelection &selection,
dirent.item_class != UPnPDirObject::ItemClass::MUSIC)
continue;
std::string tagvalue;
if (getTagValue(dirent, tag, tagvalue)) {
const char *value = getTagValue(dirent, tag);
if (value != nullptr) {
#if defined(__clang__) || GCC_CHECK_VERSION(4,8)
values.emplace(std::move(tagvalue));
values.emplace(value);
#else
values.insert(std::move(tagvalue));
values.insert(value);
#endif
}
}