summaryrefslogtreecommitdiff
path: root/src/xmlpatterns/expr/qexpressionvariablereference_p.h
diff options
context:
space:
mode:
authorAlbert Astals Cid <albert.astals@canonical.com>2016-10-27 17:43:43 +0200
committerAlbert Astals Cid <albert.astals@canonical.com>2016-11-02 09:21:50 +0000
commit6b6f7db32e7c9ca4bdda0341994dca1212b53e20 (patch)
tree26e2790d4f8dec77e162ffeeeb9c407839e0cc40 /src/xmlpatterns/expr/qexpressionvariablereference_p.h
parent66be7fd267fa432f79a9f2bb6edc6a76285a7f39 (diff)
downloadqtxmlpatterns-6b6f7db32e7c9ca4bdda0341994dca1212b53e20.tar.gz
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 <erik.verbruggen@qt.io>
Diffstat (limited to 'src/xmlpatterns/expr/qexpressionvariablereference_p.h')
-rw-r--r--src/xmlpatterns/expr/qexpressionvariablereference_p.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/xmlpatterns/expr/qexpressionvariablereference_p.h b/src/xmlpatterns/expr/qexpressionvariablereference_p.h
index cc5645b..12a019c 100644
--- a/src/xmlpatterns/expr/qexpressionvariablereference_p.h
+++ b/src/xmlpatterns/expr/qexpressionvariablereference_p.h
@@ -67,7 +67,7 @@ namespace QPatternist
{
public:
ExpressionVariableReference(const VariableSlotID slot,
- const VariableDeclaration::Ptr &varDecl);
+ const VariableDeclaration *varDecl);
virtual bool evaluateEBV(const DynamicContext::Ptr &context) const;
virtual Item evaluateSingleton(const DynamicContext::Ptr &context) const;
@@ -80,9 +80,9 @@ namespace QPatternist
virtual ExpressionVisitorResult::Ptr accept(const ExpressionVisitor::Ptr &visitor) const;
inline const Expression::Ptr &sourceExpression() const;
- inline const VariableDeclaration::Ptr &variableDeclaration() const;
+ inline const VariableDeclaration *variableDeclaration() const;
private:
- const VariableDeclaration::Ptr m_varDecl;
+ const VariableDeclaration *m_varDecl;
};
inline const Expression::Ptr &ExpressionVariableReference::sourceExpression() const
@@ -90,7 +90,7 @@ namespace QPatternist
return m_varDecl->expression();
}
- inline const VariableDeclaration::Ptr &ExpressionVariableReference::variableDeclaration() const
+ inline const VariableDeclaration *ExpressionVariableReference::variableDeclaration() const
{
return m_varDecl;
}