[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kate] kate/plugins/pate/src: Add some defences to avoid some crashes
From: Shaheed Haque <srhaque () theiet ! org>
Date: 2012-06-30 22:49:12
Message-ID: 20120630224912.A79E4A60A6 () git ! kde ! org
[Download RAW message or body]
Git commit 324e7e07eabf50603fdcce914346ecb81a31b51a by Shaheed Haque.
Committed on 30/06/2012 at 23:52.
Pushed by shaheed into branch 'master'.
Add some defences to avoid some crashes
I cannot reproduce the crashes that Dominik is seeing, but try to add
some defences against the crash he is seeing.
M +9 -7 kate/plugins/pate/src/engine.cpp
M +10 -8 kate/plugins/pate/src/plugin.cpp
http://commits.kde.org/kate/324e7e07eabf50603fdcce914346ecb81a31b51a
diff --git a/kate/plugins/pate/src/engine.cpp b/kate/plugins/pate/src/engine.cpp
index c2dac1d..1ffe0bd 100644
--- a/kate/plugins/pate/src/engine.cpp
+++ b/kate/plugins/pate/src/engine.cpp
@@ -420,15 +420,17 @@ void Pate::Engine::unloadModules()
Python py = Python();
PyObject *modules = PyImport_GetModuleDict();
PyObject *plugins = py.itemString("plugins");
- for(Py_ssize_t i = 0, j = PyList_Size(plugins); i < j; ++i) {
- PyObject *pluginName = py.itemString("__name__", \
PyModule_GetDict(PyList_GetItem(plugins, i)));
- if(pluginName && PyDict_Contains(modules, pluginName)) {
- PyDict_DelItem(modules, pluginName);
- kDebug() << "Deleted" << PyString_AsString(pluginName) << "from \
sys.modules"; + if (plugins) {
+ for (Py_ssize_t i = 0, j = PyList_Size(plugins); i < j; ++i) {
+ PyObject *pluginName = py.itemString("__name__", \
PyModule_GetDict(PyList_GetItem(plugins, i))); + if(pluginName && \
PyDict_Contains(modules, pluginName)) { + PyDict_DelItem(modules, \
pluginName); + kDebug() << "Deleted" << PyString_AsString(pluginName) \
<< "from sys.modules"; + }
}
+ py.itemStringDel("plugins");
+ Py_DECREF(plugins);
}
- py.itemStringDel("plugins");
- Py_DECREF(plugins);
m_pluginsLoaded = false;
py.functionCall("_pluginsUnloaded");
}
diff --git a/kate/plugins/pate/src/plugin.cpp b/kate/plugins/pate/src/plugin.cpp
index 53f9c4f..d62367b 100644
--- a/kate/plugins/pate/src/plugin.cpp
+++ b/kate/plugins/pate/src/plugin.cpp
@@ -122,7 +122,7 @@ void Pate::Plugin::reloadModuleConfigPages() const
Python py = Python();
PyObject *configPages = py.moduleConfigPages(PQ(pluginName));
if (configPages) {
- for(Py_ssize_t k = 0, l = PyList_Size(configPages); k < l; ++k) {
+ for (Py_ssize_t k = 0, l = PyList_Size(configPages); k < l; ++k) {
// Add an action for this plugin.
PyObject *tuple = PyList_GetItem(configPages, k);
Py_INCREF(tuple);
@@ -290,12 +290,14 @@ void Pate::ConfigPage::reloadPage()
// Add a topic for each plugin. using stacked page 1.
Python py = Python();
PyObject *plugins = py.itemString("plugins");
- for(Py_ssize_t i = 0, j = PyList_Size(plugins); i < j; ++i) {
- PyObject *module = PyList_GetItem(plugins, i);
+ if (plugins) {
+ for (Py_ssize_t i = 0, j = PyList_Size(plugins); i < j; ++i) {
+ PyObject *module = PyList_GetItem(plugins, i);
- // Add a topic for this plugin, using stacked page 1.
- topic = QLatin1String(PyModule_GetName(module));
- m_info.topics->addItem(KIcon("text-x-python"), topic);
+ // Add a topic for this plugin, using stacked page 1.
+ topic = QLatin1String(PyModule_GetName(module));
+ m_info.topics->addItem(KIcon("text-x-python"), topic);
+ }
}
infoTopicChanged(0);
}
@@ -323,7 +325,7 @@ void Pate::ConfigPage::infoTopicChanged(int topicIndex)
Py_XDECREF(m_pluginActions);
m_pluginActions = py.moduleActions(PQ(topic));
if (m_pluginActions) {
- for(Py_ssize_t i = 0, j = PyList_Size(m_pluginActions); i < j; ++i) {
+ for (Py_ssize_t i = 0, j = PyList_Size(m_pluginActions); i < j; ++i) {
PyObject *tuple = PyList_GetItem(m_pluginActions, i);
PyObject *functionName = PyTuple_GetItem(tuple, 0);
@@ -340,7 +342,7 @@ void Pate::ConfigPage::infoTopicChanged(int topicIndex)
Py_XDECREF(m_pluginConfigPages);
m_pluginConfigPages = py.moduleConfigPages(PQ(topic));
if (m_pluginConfigPages) {
- for(Py_ssize_t i = 0, j = PyList_Size(m_pluginConfigPages); i < j; ++i) {
+ for (Py_ssize_t i = 0, j = PyList_Size(m_pluginConfigPages); i < j; ++i) {
PyObject *tuple = PyList_GetItem(m_pluginConfigPages, i);
PyObject *functionName = PyTuple_GetItem(tuple, 0);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic