https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117284
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2024-10-24
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Currently __gnu_debug::vector::assign does:
this->_M_invalidate_all();
this->_M_update_guaranteed_capacity();
But I think it should be:
if (__old_data != _Base::data())
{
this->_M_invalidate_all();
this->_M_update_guaranteed_capacity();
}
else if (__old_size < _Base::size())
this->_M_invalidate_after_nth(_Base::size());
where __old_data and __old_size are _Base::data() and _Base::size() before
calling _Base::assign.