diff options
author | Niklas Kurkisuo <ext-niklas.kurkisuo@nokia.com> | 2010-12-03 11:50:36 (GMT) |
---|---|---|
committer | David Boddie <david.boddie@nokia.com> | 2011-05-13 13:56:29 (GMT) |
commit | 23267553627ac3c4cbcd918283bee8e665deeff9 (patch) | |
tree | 9301d656c9cd80c81192538231f0731c0b3c7850 /src/xmlpatterns/expr/quserfunctioncallsite.cpp | |
parent | 3d27a19ca009836b812b59c3359db1369d391181 (diff) | |
download | Qt-23267553627ac3c4cbcd918283bee8e665deeff9.zip Qt-23267553627ac3c4cbcd918283bee8e665deeff9.tar.gz Qt-23267553627ac3c4cbcd918283bee8e665deeff9.tar.bz2 |
Fix memory leak in QXmlQuery::setQuery.
There is a circular reference dependency between VariableDeclaration
and the classes EvaluationCache, ExpressionVariableReference and
TemplateParameterReference. By removing the explicitly shared pointer
of VariableDeclaration in these classes the circle is broken and memory
is freed correctly.
Task-number: QT-4106
Integrated-by: David Boddie
Diffstat (limited to 'src/xmlpatterns/expr/quserfunctioncallsite.cpp')
-rw-r--r-- | src/xmlpatterns/expr/quserfunctioncallsite.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/xmlpatterns/expr/quserfunctioncallsite.cpp b/src/xmlpatterns/expr/quserfunctioncallsite.cpp index 4e81484..65bbeab 100644 --- a/src/xmlpatterns/expr/quserfunctioncallsite.cpp +++ b/src/xmlpatterns/expr/quserfunctioncallsite.cpp @@ -227,7 +227,7 @@ void UserFunctionCallsite::setSource(const UserFunction::Ptr &userFunction, /* Note that we pass in cacheSlotOffset + i here instead of varDecls.at(i)->slot since * we want independent caches for each callsite. */ m_operands[i] = Expression::Ptr(new EvaluationCache<false>(m_operands.at(i), - varDecls.at(i), + varDecls.at(i).data(), cacheSlotOffset + i)); } } |