]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Add assertions to std::list::pop_{front,back}
authorJonathan Wakely <jwakely@redhat.com>
Thu, 27 Feb 2025 21:59:41 +0000 (21:59 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Thu, 6 Mar 2025 16:17:34 +0000 (16:17 +0000)
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 <ppalka@redhat.com>
libstdc++-v3/include/bits/stl_list.h

index f987d8b9d0a3d46f16b39cc1c612a6ee1159c496..82ccb50ff1823ab2635c420398697ee99e159fa4 100644 (file)
@@ -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
       /**