https://gcc.gnu.org/g:4412e9bb73754a0c9668e80c4b8ee2fefffbbb04
commit r15-7866-g4412e9bb73754a0c9668e80c4b8ee2fefffbbb04 Author: Jonathan Wakely <jwak...@redhat.com> Date: Thu Feb 27 21:59:41 2025 +0000 libstdc++: Add assertions to std::list::pop_{front,back} The recently-approved Standard Library Hardening proposal (P3471R4) gives pop_front and pop_back member functions hardened preconditions, but std::list was missing assertions on them. Our other sequence containers do have assertions on those members. libstdc++-v3/ChangeLog: * include/bits/stl_list.h (list::pop_front, list::pop_back): Add non-empty assertions. Reviewed-by: Patrick Palka <ppa...@redhat.com> Diff: --- libstdc++-v3/include/bits/stl_list.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libstdc++-v3/include/bits/stl_list.h b/libstdc++-v3/include/bits/stl_list.h index f987d8b9d0a3..82ccb50ff182 100644 --- a/libstdc++-v3/include/bits/stl_list.h +++ b/libstdc++-v3/include/bits/stl_list.h @@ -1784,7 +1784,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 */ void pop_front() _GLIBCXX_NOEXCEPT - { this->_M_erase(begin()); } + { + __glibcxx_requires_nonempty(); + this->_M_erase(begin()); + } /** * @brief Add data to the end of the %list. @@ -1833,7 +1836,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 */ void pop_back() _GLIBCXX_NOEXCEPT - { this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); } + { + __glibcxx_requires_nonempty(); + this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); + } #if __cplusplus >= 201103L /**