Blob Blame History Raw
From b260ae7c9de236b320dee28d854caeccd1ff395c Mon Sep 17 00:00:00 2001
From: Dominik Haumann <dhaumann@kde.org>
Date: Sun, 10 Apr 2016 00:00:00 +0200
Subject: [PATCH] fix crash when loading plugins that are not properly
 installed (bug #361517)

REVIEW: 127620
BUG: 361517
---
 kate/katepluginmanager.cpp | 8 ++++++--
 kate/katepluginmanager.h   | 5 +++++
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/kate/katepluginmanager.cpp b/kate/katepluginmanager.cpp
index 22ed1df..9fd3d7b 100644
--- a/kate/katepluginmanager.cpp
+++ b/kate/katepluginmanager.cpp
@@ -181,8 +181,12 @@ void KatePluginManager::loadPlugin(KatePluginInfo *item)
     /**
      * try to load the plugin
      */
-    item->load = (item->plugin = KPluginLoader(item->metaData.fileName()).factory()->create<KTextEditor::Plugin>(this, QVariantList() << item->saveName()));
-    
+    auto factory = KPluginLoader(item->metaData.fileName()).factory();
+    if (factory) {
+        item->plugin = factory->create<KTextEditor::Plugin>(this, QVariantList() << item->saveName());
+        item->load = item->plugin != nullptr;
+    }
+
     /**
      * tell the world about the success
      */
diff --git a/kate/katepluginmanager.h b/kate/katepluginmanager.h
index ae954d0..942e386 100644
--- a/kate/katepluginmanager.h
+++ b/kate/katepluginmanager.h
@@ -37,6 +37,11 @@ class KateMainWindow;
 class KatePluginInfo
 {
 public:
+    KatePluginInfo()
+        : load(false)
+        , defaultLoad(false)
+        , plugin(nullptr)
+    {}
     bool load;
     bool defaultLoad;
     KPluginMetaData metaData;
-- 
2.7.3