[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kate/Applications/16.04] kate: Properly check whether plugin loading is failed.
From:       Weng Xuetian <wengxt () gmail ! com>
Date:       2016-04-20 16:00:42
Message-ID: E1asuYU-0002xw-5c () scm ! kde ! org
[Download RAW message or body]

Git commit 070c685cf5769595dbff19488f715c17220b6d22 by Weng Xuetian.
Committed on 20/04/2016 at 16:00.
Pushed by xuetianweng into branch 'Applications/16.04'.

Properly check whether plugin loading is failed.

If plugin's library is missing a shared library, the factory might be
null but the load state is not reset to false. Also add another check
when using loadPlugin but without check the loading state.

REVIEW: 127685

M  +4    -1    kate/kateconfigplugindialogpage.cpp
M  +4    -2    kate/katepluginmanager.cpp
M  +1    -1    kate/katepluginmanager.h

http://commits.kde.org/kate/070c685cf5769595dbff19488f715c17220b6d22

diff --git a/kate/kateconfigplugindialogpage.cpp b/kate/kateconfigplugindialogpage.cpp
index 03ee721..7516a6c 100644
--- a/kate/kateconfigplugindialogpage.cpp
+++ b/kate/kateconfigplugindialogpage.cpp
@@ -105,7 +105,10 @@ void KateConfigPluginPage::stateChange(KatePluginListItem *item, bool b)
 
 void KateConfigPluginPage::loadPlugin(KatePluginListItem *item)
 {
-    KateApp::self()->pluginManager()->loadPlugin(item->info());
+    const bool ok = KateApp::self()->pluginManager()->loadPlugin(item->info());
+    if (!ok) {
+        return;
+    }
     KateApp::self()->pluginManager()->enablePluginGUI(item->info());
     myDialog->addPluginPage(item->info()->plugin);
 
diff --git a/kate/katepluginmanager.cpp b/kate/katepluginmanager.cpp
index 9fd3d7b..a7aeec2 100644
--- a/kate/katepluginmanager.cpp
+++ b/kate/katepluginmanager.cpp
@@ -176,7 +176,7 @@ void KatePluginManager::disableAllPluginsGUI(KateMainWindow *win)
     }
 }
 
-void KatePluginManager::loadPlugin(KatePluginInfo *item)
+bool KatePluginManager::loadPlugin(KatePluginInfo *item)
 {
     /**
      * try to load the plugin
@@ -184,8 +184,8 @@ void KatePluginManager::loadPlugin(KatePluginInfo *item)
     auto factory = KPluginLoader(item->metaData.fileName()).factory();
     if (factory) {
         item->plugin = factory->create<KTextEditor::Plugin>(this, QVariantList() << item->saveName());
-        item->load = item->plugin != nullptr;
     }
+    item->load = item->plugin != nullptr;
 
     /**
      * tell the world about the success
@@ -193,6 +193,8 @@ void KatePluginManager::loadPlugin(KatePluginInfo *item)
     if (item->plugin) {
         emit KateApp::self()->wrapper()->pluginCreated(item->saveName(), item->plugin);
     }
+
+    return item->plugin != nullptr;
 }
 
 void KatePluginManager::unloadPlugin(KatePluginInfo *item)
diff --git a/kate/katepluginmanager.h b/kate/katepluginmanager.h
index 942e386..4274fdc 100644
--- a/kate/katepluginmanager.h
+++ b/kate/katepluginmanager.h
@@ -67,7 +67,7 @@ public:
     void loadConfig(KConfig *);
     void writeConfig(KConfig *);
 
-    void loadPlugin(KatePluginInfo *item);
+    bool loadPlugin(KatePluginInfo *item);
     void unloadPlugin(KatePluginInfo *item);
 
     void enablePluginGUI(KatePluginInfo *item, KateMainWindow *win, KConfigBase *config = 0);
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic