This patch provides better handling of the search iterator in the case when no matches are found. Without these fixes, the search iterator shows an arbitrary value when we load a session that has the active marker being set. Signed-off-by: Yordan Karadzhov <ykaradzhov@xxxxxxxxxx> --- kernel-shark-qt/src/KsTraceViewer.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/kernel-shark-qt/src/KsTraceViewer.cpp b/kernel-shark-qt/src/KsTraceViewer.cpp index d52d7e3..a308ea0 100644 --- a/kernel-shark-qt/src/KsTraceViewer.cpp +++ b/kernel-shark-qt/src/KsTraceViewer.cpp @@ -420,8 +420,13 @@ void KsTraceViewer::_prev() void KsTraceViewer::_updateSearchCount() { - int index(_it - _matchList.begin()); - int total(_matchList.count()); + int index, total; + + if (_matchList.isEmpty()) + return; + + index = _it - _matchList.begin(); + total =_matchList.count(); _searchCountLabel.setText(QString(" %1 / %2").arg(index).arg(total)); } @@ -655,6 +660,7 @@ size_t KsTraceViewer::_searchItems(int column, void KsTraceViewer::_setSearchIterator(int row) { + _it = _matchList.begin(); if (_matchList.isEmpty()) return; @@ -662,7 +668,6 @@ void KsTraceViewer::_setSearchIterator(int row) * Move the iterator to the first element of the match list * after the selected one. */ - _it = _matchList.begin(); while (*_it < row) { ++_it; // Move the iterator. if (_it == _matchList.end()) { -- 2.17.1
![]() |