MT#59962 XmlRpcValue: avoid unnecessary copy

Fixes:

*** CID 549009:  Performance inefficiencies  (COPY_INSTEAD_OF_MOVE)
/apps/xmlrpc2di/xmlrpc++/src/XmlRpcValue.cpp:
              515 in XmlRpc::XmlRpcValue::structFromXml(const std::__cxx11::basic_string<char,
                             std::char_traits<char>, std::allocator<char>> &, unsigned long *)()
509           XmlRpcValue val(valueXml, offset);
510           if ( ! val.valid()) {
511             invalidate();
512             return false;
513           }
514           const std::pair<const std::string, XmlRpcValue> p(name, val);
>>>     CID 549009:  Performance inefficiencies  (COPY_INSTEAD_OF_MOVE)
>>>     "p" is copied and then passed-by-reference as parameter to STL insertion function
               "std::map<std::__cxx11::basic_string<char, std::char_traits<char>,
                std::allocator<char> >, XmlRpc::XmlRpcValue,
                std::less<std::__cxx11::basic_string<char, std::char_traits<char>,
                std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char,
                std::char_traits<char>, std::allocator<char> > const,
                XmlRpc::XmlRpcValue> > >::insert(std::map<std::__cxx11::basic_string<char, std::char_traits<char>,
                std::allocator<char> >, XmlRpc::XmlRpcValue,
                std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >,
                std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
                std::allocator<char> > const, XmlRpc::XmlRpcValue> > >::value_type const &)", when it could be moved instead.
515           _value.asStruct->insert(p);
516
517           (void) XmlRpcUtil::nextTagIs(MEMBER_ETAG, valueXml, offset);
518         }
519         return true;
520       }

Change-Id: I1fe8412aca61a1671260d64bf11afb311ede8ce9
master
Donat Zenichev 2 months ago
parent 775eaeb420
commit 838c1364f5

@ -514,8 +514,8 @@ namespace XmlRpc {
invalidate();
return false;
}
const std::pair<const std::string, XmlRpcValue> p(name, val);
_value.asStruct->insert(p);
_value.asStruct->insert(std::make_pair(std::move(name), std::move(val)));
(void) XmlRpcUtil::nextTagIs(MEMBER_ETAG, valueXml, offset);
}

Loading…
Cancel
Save