From 9bbe9a4875c3008f6161940a1269ce6d27728633 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Wed, 4 Mar 2015 08:00:38 +0100 Subject: [PATCH] Fix a memory leak in *Expression::GetReference fixes #8593 --- lib/config/expression.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/config/expression.cpp b/lib/config/expression.cpp index af2c53de8..8a8eec0ed 100644 --- a/lib/config/expression.cpp +++ b/lib/config/expression.cpp @@ -597,8 +597,9 @@ bool IndexerExpression::GetReference(ScriptFrame& frame, bool init_dict, Value * { Value vparent; String vindex; + DebugHint *psdhint = NULL; - if (m_Operand1->GetReference(frame, init_dict, &vparent, &vindex, dhint)) { + if (m_Operand1->GetReference(frame, init_dict, &vparent, &vindex, &psdhint)) { if (init_dict && VMOps::GetField(vparent, vindex, m_Operand1->GetDebugInfo()).IsEmpty()) VMOps::SetField(vparent, vindex, new Dictionary(), m_Operand1->GetDebugInfo()); @@ -611,8 +612,10 @@ bool IndexerExpression::GetReference(ScriptFrame& frame, bool init_dict, Value * ExpressionResult operand2 = m_Operand2->Evaluate(frame); *index = operand2.GetValue(); - if (dhint && *dhint) - *dhint = new DebugHint((*dhint)->GetChild(*index)); + if (dhint && psdhint) + *dhint = new DebugHint(psdhint->GetChild(*index)); + + delete psdhint; return true; }