-
Bug
-
Resolution: Out of scope
-
P2: Important
-
None
-
5.8.0
-
None
Valgrind reports a memory leak in QXmlQuery with the following simpleprogram:
#include <QCoreApplication>
#include <QXmlQuery>
auto transform =
R"XSL(<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/root">
<xsl:apply-templates select="*"/>
</xsl:template>
</xsl:stylesheet>)XSL";
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QXmlQuery query(QXmlQuery::XSLT20);
query.setFocus("<root><test/></root>");
query.setQuery(transform);
return 0;
}
valgrind --tool=memcheck --leak-check=full --leak-resolution=high ./apply-templates 2> log.txt
log.txt
==3524== 712 (24 direct, 688 indirect) bytes in 1 blocks are definitely lost in loss record 199 of 211 ==3524== at 0x4C2B0E0: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==3524== by 0x4FFF8C4: QPatternist::ParserContext::modeFor(QXmlName const&) (qparsercontext_p.h:344) ==3524== by 0x4FF090B: QPatternist::XPathparse(QPatternist::ParserContext*) (querytransformparser.ypp:3621) ==3524== by 0x4F4EF0F: QPatternist::ExpressionFactory::createExpression(QExplicitlySharedDataPointer<QPatternist::Tokenizer> const&, QExplicitlySharedDataPointer<QPatternist::StaticContext> const&, QXmlQuery::QueryLanguage, QExplicitlySharedDataPointer<QPatternist::SequenceType const> const&, QUrl const&, QXmlName const&) (qexpressionfactory.cpp:149) ==3524== by 0x4F50E72: QPatternist::ExpressionFactory::createExpression(QIODevice*, QExplicitlySharedDataPointer<QPatternist::StaticContext> const&, QXmlQuery::QueryLanguage, QExplicitlySharedDataPointer<QPatternist::SequenceType const> const&, QUrl const&, QXmlName const&) (qexpressionfactory.cpp:123) ==3524== by 0x4F00811: QXmlQueryPrivate::expression(QIODevice*) (qxmlquery_p.h:252) ==3524== by 0x4EFE51D: QXmlQuery::setQuery(QIODevice*, QUrl const&) (qxmlquery.cpp:429) ==3524== by 0x4EFF0D7: QXmlQuery::setQuery(QString const&, QUrl const&) (qxmlquery.cpp:448) ==3524== by 0x400DC9: main (main.cpp:19)
I only see this leak when using the 'apply-templates' XSL node.