diff options
author | Renato Filho <renato.filho@openbossa.org> | 2011-03-22 10:55:13 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:15:18 -0300 |
commit | 0882f35b2d010515593ee3ddfe64e94f7f9942e5 (patch) | |
tree | 8aff61aadbe2eb6a8b34f20c39afcadff733fc31 /libshiboken | |
parent | 17546cd6200fd45d57e8b07b77f2f99ade36776b (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.cpp | 11 |
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; |