From 6b6f7db32e7c9ca4bdda0341994dca1212b53e20 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Thu, 27 Oct 2016 17:43:43 +0200 Subject: Fix memory leak We can't have the ExpressionVariableReference/TemplateParameterReference holding a Ptr of VariableDeclaration because the VariableDeclaration holds a Ptr of them (in the references member) so they were referencing eachother and the reference count never reaches 0. Task-number: QTBUG-32745 Change-Id: I4cda6d9eccad123984f4ad35db3e56da01d4d5b1 Reviewed-by: Erik Verbruggen --- src/xmlpatterns/parser/querytransformparser.ypp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/xmlpatterns/parser/querytransformparser.ypp') diff --git a/src/xmlpatterns/parser/querytransformparser.ypp b/src/xmlpatterns/parser/querytransformparser.ypp index edd2823..0a0b11c 100644 --- a/src/xmlpatterns/parser/querytransformparser.ypp +++ b/src/xmlpatterns/parser/querytransformparser.ypp @@ -1015,7 +1015,7 @@ static Expression::Ptr resolveVariable(const QXmlName &name, * mechanism must. */ case VariableDeclaration::ExpressionVariable: { - retval = create(new ExpressionVariableReference(var->slot, var), sourceLocator, parseInfo); + retval = create(new ExpressionVariableReference(var->slot, var.data()), sourceLocator, parseInfo); break; } case VariableDeclaration::FunctionArgument: @@ -1030,7 +1030,7 @@ static Expression::Ptr resolveVariable(const QXmlName &name, } case VariableDeclaration::TemplateParameter: { - retval = create(new TemplateParameterReference(var), sourceLocator, parseInfo); + retval = create(new TemplateParameterReference(var.data()), sourceLocator, parseInfo); break; } case VariableDeclaration::ExternalVariable: -- cgit v1.2.1