aboutsummaryrefslogtreecommitdiffstats
path: root/libshiboken/typeresolver.cpp
diff options
context:
space:
mode:
authorHugo Parente Lima <hugo.pl@gmail.com>2010-10-21 18:13:21 -0200
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:07:23 -0300
commit03f1e7b4982fe8d8335b7b04f66825e49ff66531 (patch)
tree35651df402255af143f7e7bf9e8495381fd99211 /libshiboken/typeresolver.cpp
parent3c63ad23a0befc181be2db9655a4aa29f8b78168 (diff)
Fix memory leak when someone tries to register a type already registered.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org> Renato Araújo <renato.filho@openbossa.org>
Diffstat (limited to 'libshiboken/typeresolver.cpp')
-rw-r--r--libshiboken/typeresolver.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/libshiboken/typeresolver.cpp b/libshiboken/typeresolver.cpp
index d1439ef80..89bc63293 100644
--- a/libshiboken/typeresolver.cpp
+++ b/libshiboken/typeresolver.cpp
@@ -57,7 +57,11 @@ void Shiboken::initTypeResolver()
static void registerTypeResolver(TypeResolver* resolver)
{
- typeResolverMap[resolver->typeName()] = resolver;
+ TypeResolver*& v = typeResolverMap[resolver->typeName()];
+ if (!v)
+ v = resolver;
+ else
+ delete resolver; // Discard type resolvers already registered
}
TypeResolver::TypeResolver(const char* typeName, TypeResolver::CppToPythonFunc cppToPy, TypeResolver::PythonToCppFunc pyToCpp, PyTypeObject* pyType, TypeResolver::DeleteObjectFunc deleter)