Fix off-by-one bug in wxVector::reverse_iterator::base()

This is embarrassing, but the iterator returned by this method seems to
have always been wrong, ever since it was added back in 946954d3bf
(Added reverse iterator to wxVector<T>, 2008-09-16). Moreover, it was
also broken in its const_reverse_iterator counterpart where it was
copy-and-pasted in f7ef20685f (Add wxVector<>::const_reverse_iterator,
2013-05-08).

Finally fix this to return the correct value and add at least a simple
unit test check that this method behaves as expected.
This commit is contained in:
Vadim Zeitlin
2020-07-11 19:00:38 +02:00
parent 885ef5819e
commit 5495389db5
2 changed files with 6 additions and 2 deletions

View File

@@ -198,7 +198,7 @@ public:
reference operator*() const { return *m_ptr; }
pointer operator->() const { return m_ptr; }
iterator base() const { return m_ptr; }
iterator base() const { return m_ptr + 1; }
reverse_iterator& operator++()
{ --m_ptr; return *this; }
@@ -261,7 +261,7 @@ public:
const_reference operator*() const { return *m_ptr; }
const_pointer operator->() const { return m_ptr; }
const_iterator base() const { return m_ptr; }
const_iterator base() const { return m_ptr + 1; }
const_reverse_iterator& operator++()
{ --m_ptr; return *this; }