From: Peter Penz Date: Fri, 27 Apr 2012 07:28:00 +0000 (+0200) Subject: Never pass null-items to version-control-plugins X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/0a00f13bf246d37182dafcd053776048f63d2299?ds=inline Never pass null-items to version-control-plugins Some plugins are not prepared for this and might crash. Although the additional check in VersionControlObserver::actions() should not be necessary because of the fix in DolphinView, it is left here to catch potential other cases where a null-item might get passed accidently. Thanks to Ilya for initially patching the Box-plugin which gave a hint whats going wrong. BUG: 294336 FIXED-IN: 4.9.0 --- diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index d21743bf4..2f744386f 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -559,7 +559,9 @@ QList DolphinView::versionControlActions(const KFileItemList& items) c if (items.isEmpty()) { const KFileItem item = m_model->rootItem(); - actions = m_versionControlObserver->actions(KFileItemList() << item); + if (!item.isNull()) { + actions = m_versionControlObserver->actions(KFileItemList() << item); + } } else { actions = m_versionControlObserver->actions(items); } diff --git a/src/views/versioncontrol/versioncontrolobserver.cpp b/src/views/versioncontrol/versioncontrolobserver.cpp index bbabd2e4e..42e00de42 100644 --- a/src/views/versioncontrol/versioncontrolobserver.cpp +++ b/src/views/versioncontrol/versioncontrolobserver.cpp @@ -90,7 +90,17 @@ KFileItemModel* VersionControlObserver::model() const QList VersionControlObserver::actions(const KFileItemList& items) const { QList actions; - if (!m_model) { + + bool hasNullItems = false; + foreach (const KFileItem& item, items) { + if (item.isNull()) { + kWarning() << "Requesting version-control-actions for empty items"; + hasNullItems = true; + break; + } + } + + if (!m_model || hasNullItems) { return actions; }