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
       /**

Reply via email to