menu: fixed rcurrent iterators on empty menus
If m_items is empty, ++current() did result in an invalid iterator (pointing behind end()).
This commit is contained in:
committed by
Andrzej Rybczak
parent
1619712682
commit
14fb3baf63
3
NEWS
3
NEWS
@@ -1,3 +1,6 @@
|
|||||||
|
ncmpcpp-0.7.6 (????-??-??)
|
||||||
|
* Fixed assertion failure on trying to search backwards in an empty list.
|
||||||
|
|
||||||
ncmpcpp-0.7.5 (2016-08-17)
|
ncmpcpp-0.7.5 (2016-08-17)
|
||||||
* Action chains can be now used for seeking.
|
* Action chains can be now used for seeking.
|
||||||
* Fixed fetching artist info from last.fm.
|
* Fixed fetching artist info from last.fm.
|
||||||
|
|||||||
28
src/menu.h
28
src/menu.h
@@ -353,13 +353,33 @@ template <typename ItemT> struct Menu : Window, List
|
|||||||
|
|
||||||
Iterator current() { return Iterator(m_items.begin() + m_highlight); }
|
Iterator current() { return Iterator(m_items.begin() + m_highlight); }
|
||||||
ConstIterator current() const { return ConstIterator(m_items.begin() + m_highlight); }
|
ConstIterator current() const { return ConstIterator(m_items.begin() + m_highlight); }
|
||||||
ReverseIterator rcurrent() { return ReverseIterator(++current()); }
|
ReverseIterator rcurrent() {
|
||||||
ConstReverseIterator rcurrent() const { return ReverseIterator(++current()); }
|
if (empty())
|
||||||
|
return rend();
|
||||||
|
else
|
||||||
|
return ReverseIterator(++current());
|
||||||
|
}
|
||||||
|
ConstReverseIterator rcurrent() const {
|
||||||
|
if (empty())
|
||||||
|
return rend();
|
||||||
|
else
|
||||||
|
return ConstReverseIterator(++current());
|
||||||
|
}
|
||||||
|
|
||||||
ValueIterator currentV() { return ValueIterator(m_items.begin() + m_highlight); }
|
ValueIterator currentV() { return ValueIterator(m_items.begin() + m_highlight); }
|
||||||
ConstValueIterator currentV() const { return ConstValueIterator(m_items.begin() + m_highlight); }
|
ConstValueIterator currentV() const { return ConstValueIterator(m_items.begin() + m_highlight); }
|
||||||
ReverseValueIterator rcurrentV() { return ReverseValueIterator(++currentV()); }
|
ReverseValueIterator rcurrentV() {
|
||||||
ConstReverseValueIterator rcurrentV() const { return ConstReverseValueIterator(++currentV()); }
|
if (empty())
|
||||||
|
return rendV();
|
||||||
|
else
|
||||||
|
return ReverseValueIterator(++currentV());
|
||||||
|
}
|
||||||
|
ConstReverseValueIterator rcurrentV() const {
|
||||||
|
if (empty())
|
||||||
|
return rendV();
|
||||||
|
else
|
||||||
|
return ConstReverseValueIterator(++currentV());
|
||||||
|
}
|
||||||
|
|
||||||
Iterator begin() { return Iterator(m_items.begin()); }
|
Iterator begin() { return Iterator(m_items.begin()); }
|
||||||
ConstIterator begin() const { return ConstIterator(m_items.begin()); }
|
ConstIterator begin() const { return ConstIterator(m_items.begin()); }
|
||||||
|
|||||||
Reference in New Issue
Block a user