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)
|
||||
* Action chains can be now used for seeking.
|
||||
* 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); }
|
||||
ConstIterator current() const { return ConstIterator(m_items.begin() + m_highlight); }
|
||||
ReverseIterator rcurrent() { return ReverseIterator(++current()); }
|
||||
ConstReverseIterator rcurrent() const { return ReverseIterator(++current()); }
|
||||
ReverseIterator rcurrent() {
|
||||
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); }
|
||||
ConstValueIterator currentV() const { return ConstValueIterator(m_items.begin() + m_highlight); }
|
||||
ReverseValueIterator rcurrentV() { return ReverseValueIterator(++currentV()); }
|
||||
ConstReverseValueIterator rcurrentV() const { return ConstReverseValueIterator(++currentV()); }
|
||||
ReverseValueIterator rcurrentV() {
|
||||
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()); }
|
||||
ConstIterator begin() const { return ConstIterator(m_items.begin()); }
|
||||
|
||||
Reference in New Issue
Block a user