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/kateconfigplugindia= logpage.cpp index 03ee721..7516a6c 100644 --- a/kate/kateconfigplugindialogpage.cpp +++ b/kate/kateconfigplugindialogpage.cpp @@ -105,7 +105,10 @@ void KateConfigPluginPage::stateChange(KatePluginListI= tem *item, bool b) = void KateConfigPluginPage::loadPlugin(KatePluginListItem *item) { - KateApp::self()->pluginManager()->loadPlugin(item->info()); + const bool ok =3D KateApp::self()->pluginManager()->loadPlugin(item->i= nfo()); + 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(KateMainWi= ndow *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 =3D KPluginLoader(item->metaData.fileName()).factory(); if (factory) { item->plugin =3D factory->create(this, QVaria= ntList() << item->saveName()); - item->load =3D item->plugin !=3D nullptr; } + item->load =3D item->plugin !=3D 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(), i= tem->plugin); } + + return item->plugin !=3D 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, KConfi= gBase *config =3D 0);