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(itm)->deref(); - else - delete itm; + switch (itm->kind()) { + case BlockKind: static_cast(itm)->deref(); break; + case FunctionKind: delete static_cast(itm); break; + case ConditionKind: delete static_cast(itm); break; + case OperatorKind: delete static_cast(itm); break; + case VariableKind: delete static_cast(itm); break; + } } }