diff --git a/src/libs/cplusplus/CppBindings.cpp b/src/libs/cplusplus/CppBindings.cpp index 577fa6c4ba233590b31b5bc40b2a9e2405f4ed7f..25c05e0f48ec68c085911d328a7fbc391d62b1ba 100644 --- a/src/libs/cplusplus/CppBindings.cpp +++ b/src/libs/cplusplus/CppBindings.cpp @@ -75,8 +75,12 @@ NamespaceBinding::NamespaceBinding(NamespaceBinding *parent) NamespaceBinding::~NamespaceBinding() { - qDeleteAll(children); - qDeleteAll(classBindings); + qDeleteAll(QList<NamespaceBinding *>(children)); + qDeleteAll(QList<ClassBinding *>(classBindings)); + + if (parent) + parent->asNamespaceBinding()->children.removeAll(this); + parent = 0; } const NameId *NamespaceBinding::name() const @@ -547,7 +551,14 @@ ClassBinding::ClassBinding(ClassBinding *parentClass) } ClassBinding::~ClassBinding() -{ qDeleteAll(children); } +{ + qDeleteAll(QList<ClassBinding *>(children)); + if (NamespaceBinding *nsBinding = parent->asNamespaceBinding()) + nsBinding->classBindings.removeAll(this); + if (ClassBinding *classBinding = parent->asClassBinding()) + classBinding->children.removeAll(this); + parent = 0; +} const Name *ClassBinding::name() const {