diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-07-27 14:24:46 -0300 |
---|---|---|
committer | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-07-27 17:23:47 -0300 |
commit | 21460348ae4a73877ecbcc610d5ccd66a390d0c1 (patch) | |
tree | 30eca97f07cf325d8397958ff760b02244c660d3 /libshiboken | |
parent | 7bd306347b8d55343e783a340f8bdc723111944f (diff) |
BindingManager destructor now asserts if the wrapper map is empty.
The assertion is only used in debug mode. The duck punching test
was altered to avoid failing when run with debug. Check the
duck punching test file for a better explanation.
Also added a debug helper method "showWrapperMap" to the binding
manager, it shows the contents of the C pointer to Python wrapper
mapping.
Reviewed by Luciano Wolf <luciano.wolf@openbossa.org>
Reviewed by Renato Araújo <renato.filho@openbossa.org>
Diffstat (limited to 'libshiboken')
-rw-r--r-- | libshiboken/bindingmanager.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/libshiboken/bindingmanager.cpp b/libshiboken/bindingmanager.cpp index 26e146031..e8c549542 100644 --- a/libshiboken/bindingmanager.cpp +++ b/libshiboken/bindingmanager.cpp @@ -43,6 +43,16 @@ namespace Shiboken typedef google::dense_hash_map<const void*, PyObject*> WrapperMap; +static void showWrapperMap(const WrapperMap& wrapperMap) +{ + printf("-------------------------------\n"); + printf("WrapperMap: %p (size: %d)\n", &wrapperMap, (int) wrapperMap.size()); + WrapperMap::const_iterator iter; + for (iter = wrapperMap.begin(); iter != wrapperMap.end(); ++iter) + printf("key: %p, value: %p (%s)\n", iter->first, iter->second, iter->second->ob_type->tp_name); + printf("-------------------------------\n"); +} + struct BindingManager::BindingManagerPrivate { WrapperMap wrapperMapper; void releaseWrapper(void* cptr); @@ -75,6 +85,7 @@ BindingManager::BindingManager() BindingManager::~BindingManager() { + assert(m_d->wrapperMapper.size() == 0); delete m_d; } |