aboutsummaryrefslogtreecommitdiffstats
path: root/libshiboken
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2011-03-22 10:55:13 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:15:18 -0300
commit0882f35b2d010515593ee3ddfe64e94f7f9942e5 (patch)
tree8aff61aadbe2eb6a8b34f20c39afcadff733fc31 /libshiboken
parent17546cd6200fd45d57e8b07b77f2f99ade36776b (diff)
Updated module reload test.
Avoid to load a module twice. Fixes bug #734. Reviewer: Marcelo Lira <marcelo.lira@openbossa.org> Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'libshiboken')
-rw-r--r--libshiboken/basewrapper.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/libshiboken/basewrapper.cpp b/libshiboken/basewrapper.cpp
index b4a981818..ac3eb07e6 100644
--- a/libshiboken/basewrapper.cpp
+++ b/libshiboken/basewrapper.cpp
@@ -314,11 +314,16 @@ void walkThroughClassHierarchy(PyTypeObject* currentType, HierarchyVisitor* visi
bool importModule(const char* moduleName, PyTypeObject*** cppApiPtr)
{
- Shiboken::AutoDecRef module(PyImport_ImportModule(moduleName));
- if (module.isNull())
- return false;
+ PyObject* sysModules = PyImport_GetModuleDict();
+ PyObject* module = PyDict_GetItemString(sysModules, moduleName);
+ if (!module)
+ module = PyImport_ImportModule(moduleName);
+ else
+ Py_INCREF(module);
Shiboken::AutoDecRef cppApi(PyObject_GetAttrString(module, "_Cpp_Api"));
+ Py_DECREF(module);
+
if (cppApi.isNull())
return false;