Crash in completiontest
The completion test crashed with the following tacktrace:
#4 0x00007f037de72693 in QMapNodeBase::nextNode (this=0x1b60520) at tools/qmap.cpp:58
#5 0x00007f03807f1848 in QMapNode<KTextEditor::CodeCompletionModel*, KateCompletionWidget::CompletionRange>::nextNode (this=0x1b60520) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:115
#6 0x00007f03807ecf0c in QMap<KTextEditor::CodeCompletionModel*, KateCompletionWidget::CompletionRange>::const_iterator::operator++ (this=0x7ffc9281d4d0) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:491
#7 0x00007f03807ee255 in QMap<KTextEditor::CodeCompletionModel*, KateCompletionWidget::CompletionRange>::keys (this=0x2109c70) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmap.h:989
#8 0x00007f03807e98ed in KateCompletionWidget::clear (this=0x2109c30) at /home/user/kde/src/ktexteditor/src/completion/katecompletionwidget.cpp:821
#9 0x00007f03807e6aec in KateCompletionWidget::abortCompletion (this=0x2109c30) at /home/user/kde/src/ktexteditor/src/completion/katecompletionwidget.cpp:800
#10 0x00007f03807e6bc5 in KateCompletionWidget::modelContentChanged (this=0x2109c30) at /home/user/kde/src/ktexteditor/src/completion/katecompletionwidget.cpp:192
I tried debugging this further, but I really do not understand why this keeps crashing. Also the map is empty.
I wrote this workaround:
diff --git a/src/completion/katecompletionwidget.cpp b/src/completion/katecompletionwidget.cpp
index 6b707ba7..4e2bb878 100644
--- a/src/completion/katecompletionwidget.cpp
+++ b/src/completion/katecompletionwidget.cpp
@@ -818,6 +818,10 @@ void KateCompletionWidget::clear()
m_argumentHintTree->clearCompletion();
m_argumentHintModel->clear();
+ if (m_completionRanges.isEmpty()) {
+ return;
+ }
+
const auto keys = m_completionRanges.keys();
for (KTextEditor::CodeCompletionModel *model : keys) {
_aborted(model, view());
Not sure if this is worth making a MR (feels really hacky). @cullmann Do you have any different/better ideas?