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 authored and Andrzej Rybczak committed 2016-10-30 16:19:55 +01:00
1 parent 1619712682
commit 14fb3baf63
2 files changed
+27 -4

No files matched your search

+3
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.
+24 -4
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()); }