From 5409e43fb557ca3275675c9a7e1968590dbb0276 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 18 Jan 2014 15:44:41 +0100 Subject: [PATCH] db/upnp: cache m_path.back() --- src/db/upnp/Device.cxx | 25 +++++++++++++------------ src/db/upnp/Directory.cxx | 9 +++++---- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/db/upnp/Device.cxx b/src/db/upnp/Device.cxx index 413d6ac99..e668f839a 100644 --- a/src/db/upnp/Device.cxx +++ b/src/db/upnp/Device.cxx @@ -55,43 +55,44 @@ protected: } virtual void CharacterData(const XML_Char *s, int len) { + const auto ¤t = m_path.back(); std::string str = trimstring(s, len); - switch (m_path.back()[0]) { + switch (current[0]) { case 'c': - if (!m_path.back().compare("controlURL")) + if (!current.compare("controlURL")) m_tservice.controlURL = std::move(str); break; case 'd': - if (!m_path.back().compare("deviceType")) + if (!current.compare("deviceType")) m_device.deviceType = std::move(str); break; case 'e': - if (!m_path.back().compare("eventSubURL")) + if (!current.compare("eventSubURL")) m_tservice.eventSubURL = std::move(str); break; case 'f': - if (!m_path.back().compare("friendlyName")) + if (!current.compare("friendlyName")) m_device.friendlyName = std::move(str); break; case 'm': - if (!m_path.back().compare("manufacturer")) + if (!current.compare("manufacturer")) m_device.manufacturer = std::move(str); - else if (!m_path.back().compare("modelName")) + else if (!current.compare("modelName")) m_device.modelName = std::move(str); break; case 's': - if (!m_path.back().compare("serviceType")) + if (!current.compare("serviceType")) m_tservice.serviceType = std::move(str); - else if (!m_path.back().compare("serviceId")) + else if (!current.compare("serviceId")) m_tservice.serviceId = std::move(str); case 'S': - if (!m_path.back().compare("SCPDURL")) + if (!current.compare("SCPDURL")) m_tservice.SCPDURL = std::move(str); break; case 'U': - if (!m_path.back().compare("UDN")) + if (!current.compare("UDN")) m_device.UDN = std::move(str); - else if (!m_path.back().compare("URLBase")) + else if (!current.compare("URLBase")) m_device.URLBase = std::move(str); break; } diff --git a/src/db/upnp/Directory.cxx b/src/db/upnp/Directory.cxx index b9c92dabd..ce0a86fda 100644 --- a/src/db/upnp/Directory.cxx +++ b/src/db/upnp/Directory.cxx @@ -156,10 +156,11 @@ protected: virtual void CharacterData(const XML_Char *s, int len) { + const auto ¤t = m_path.back(); std::string str = trimstring(s, len); TagType type = tag_table_lookup(upnp_tags, - m_path.back().c_str()); + current.c_str()); if (type != TAG_NUM_OF_ITEM_TYPES) { tag.AddItem(type, str.c_str()); @@ -169,14 +170,14 @@ protected: return; } - switch (m_path.back()[0]) { + switch (current[0]) { case 'r': - if (!m_path.back().compare("res")) { + if (!current.compare("res")) { m_tobj.url = std::move(str); } break; case 'u': - if (m_path.back() == "upnp:class") { + if (current == "upnp:class") { m_tobj.item_class = ParseItemClass(str.c_str()); break; }