From d86f7dcd680e0695d7a592497c28cf2eb70846fc Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Date: Thu, 1 Apr 2010 11:02:09 +0200 Subject: [PATCH] plug huge memory leak in my quest to de-virtualize the ProItems i also devirtualized their d'tors without providing a replacement. whoops. Reviewed-by: dt Task-number: QTCREATORBUG-1003 --- src/shared/proparser/proitems.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/shared/proparser/proitems.cpp b/src/shared/proparser/proitems.cpp index 42c75b616d7..9916ebae9d1 100644 --- a/src/shared/proparser/proitems.cpp +++ b/src/shared/proparser/proitems.cpp @@ -45,10 +45,13 @@ ProBlock::~ProBlock() { for (ProItem *itm, *nitm = m_proitems; (itm = nitm); ) { nitm = itm->m_next; - if (itm->kind() == BlockKind) - static_cast<ProBlock *>(itm)->deref(); - else - delete itm; + switch (itm->kind()) { + case BlockKind: static_cast<ProBlock *>(itm)->deref(); break; + case FunctionKind: delete static_cast<ProFunction *>(itm); break; + case ConditionKind: delete static_cast<ProCondition *>(itm); break; + case OperatorKind: delete static_cast<ProOperator *>(itm); break; + case VariableKind: delete static_cast<ProVariable *>(itm); break; + } } } -- GitLab