[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