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