]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Never pass null-items to version-control-plugins
authorPeter Penz <peter.penz19@gmail.com>
Fri, 27 Apr 2012 07:28:00 +0000 (09:28 +0200)
committerPeter Penz <peter.penz19@gmail.com>
Fri, 27 Apr 2012 07:31:57 +0000 (09:31 +0200)
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

src/views/dolphinview.cpp
src/views/versioncontrol/versioncontrolobserver.cpp

index d21743bf490b0483a6e901c5f3886b5f3f1baba9..2f744386f90316d03a5949adc14c3570830b3c0e 100644 (file)
@@ -559,7 +559,9 @@ QList<QAction*> 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);
     }
index bbabd2e4e115fd1fa3606bf4e822f1b5024a642b..42e00de429dbbb05b21cd524bbd3c042a88e1d87 100644 (file)
@@ -90,7 +90,17 @@ KFileItemModel* VersionControlObserver::model() const
 QList<QAction*> VersionControlObserver::actions(const KFileItemList& items) const
 {
     QList<QAction*> 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;
     }