From b6020f5d7329e221c68b160d10b169f1aefb8a83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ion=20Gazta=C3=B1aga?= Date: Sun, 2 Jan 2022 00:26:44 +0100 Subject: [PATCH] Use BOOST_MOVE_TO_LV in pair to avoid potential UB --- include/boost/container/detail/pair.hpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/include/boost/container/detail/pair.hpp b/include/boost/container/detail/pair.hpp index feb1c7b..449e093 100644 --- a/include/boost/container/detail/pair.hpp +++ b/include/boost/container/detail/pair.hpp @@ -246,7 +246,7 @@ struct pair //pair move constructor pair(BOOST_RV_REF(pair) p) - : first(::boost::move(p.first)), second(::boost::move(p.second)) + : first(::boost::move(BOOST_MOVE_TO_LV(p).first)), second(::boost::move(BOOST_MOVE_TO_LV(p).second)) { BOOST_STATIC_ASSERT((sizeof(std::pair) == sizeof(pair))); } @@ -260,7 +260,7 @@ struct pair template pair(BOOST_RV_REF_BEG pair BOOST_RV_REF_END p) - : first(::boost::move(p.first)), second(::boost::move(p.second)) + : first(::boost::move(BOOST_MOVE_TO_LV(p).first)), second(::boost::move(BOOST_MOVE_TO_LV(p).second)) { BOOST_STATIC_ASSERT((sizeof(std::pair) == sizeof(pair))); } @@ -296,14 +296,14 @@ struct pair } pair(BOOST_RV_REF_BEG std::pair BOOST_RV_REF_END p) - : first(::boost::move(p.first)), second(::boost::move(p.second)) + : first(::boost::move(BOOST_MOVE_TO_LV(p).first)), second(::boost::move(BOOST_MOVE_TO_LV(p).second)) { BOOST_STATIC_ASSERT((sizeof(std::pair) == sizeof(pair))); } template pair(BOOST_RV_REF_BEG std::pair BOOST_RV_REF_END p) - : first(::boost::move(p.first)), second(::boost::move(p.second)) + : first(::boost::move(BOOST_MOVE_TO_LV(p).first)), second(::boost::move(BOOST_MOVE_TO_LV(p).second)) { BOOST_STATIC_ASSERT((sizeof(std::pair) == sizeof(pair))); } @@ -440,8 +440,8 @@ struct pair //pair move assignment pair& operator=(BOOST_RV_REF(pair) p) { - first = ::boost::move(p.first); - second = ::boost::move(p.second); + first = ::boost::move(BOOST_MOVE_TO_LV(p).first); + second = ::boost::move(BOOST_MOVE_TO_LV(p).second); return *this; } @@ -466,8 +466,8 @@ struct pair >::type operator=(BOOST_RV_REF_BEG pair BOOST_RV_REF_END p) { - first = ::boost::move(p.first); - second = ::boost::move(p.second); + first = ::boost::move(BOOST_MOVE_TO_LV(p).first); + second = ::boost::move(BOOST_MOVE_TO_LV(p).second); return *this; } //std::pair copy assignment @@ -489,16 +489,16 @@ struct pair //std::pair move assignment pair& operator=(BOOST_RV_REF_BEG std::pair BOOST_RV_REF_END p) { - first = ::boost::move(p.first); - second = ::boost::move(p.second); + first = ::boost::move(BOOST_MOVE_TO_LV(p).first); + second = ::boost::move(BOOST_MOVE_TO_LV(p).second); return *this; } template pair& operator=(BOOST_RV_REF_BEG std::pair BOOST_RV_REF_END p) { - first = ::boost::move(p.first); - second = ::boost::move(p.second); + first = ::boost::move(BOOST_MOVE_TO_LV(p).first); + second = ::boost::move(BOOST_MOVE_TO_LV(p).second); return *this; }