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:
Lennart Braun
2016-10-17 22:15:49 +02:00
committed by Andrzej Rybczak
parent 1619712682
commit 14fb3baf63
2 changed files with 27 additions and 4 deletions

3
NEWS
View File

@@ -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.

View File

@@ -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()); }