From 342c99ff45c1e6ef524b6045571900fd7408d635 Mon Sep 17 00:00:00 2001 From: Roman Pasechnik Date: Mon, 18 Feb 2013 16:08:28 +0200 Subject: Fixed memory leak in QXmlStreamReader MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed memory leak caused by repetitive usage of the same QXmlStreamReader instance. Task-number: QTBUG-27889 Change-Id: I673f4d26bae1503cb43e972f95b418dbf6d6fd89 Reviewed-by: Olivier Goffart Reviewed-by: Jędrzej Nowacki --- src/corelib/xml/qxmlstream.cpp | 2 ++ src/corelib/xml/qxmlstream_p.h | 1 + 2 files changed, 3 insertions(+) (limited to 'src/corelib/xml') diff --git a/src/corelib/xml/qxmlstream.cpp b/src/corelib/xml/qxmlstream.cpp index 4be4593e95..372b1d91fe 100644 --- a/src/corelib/xml/qxmlstream.cpp +++ b/src/corelib/xml/qxmlstream.cpp @@ -784,6 +784,7 @@ QXmlStreamPrivateTagStack::QXmlStreamPrivateTagStack() NamespaceDeclaration &namespaceDeclaration = namespaceDeclarations.push(); namespaceDeclaration.prefix = addToStringStorage(QLatin1String("xml")); namespaceDeclaration.namespaceUri = addToStringStorage(QLatin1String("http://www.w3.org/XML/1998/namespace")); + initialTagStackStringStorageSize = tagStackStringStorageSize; } #ifndef QT_NO_XMLSTREAMREADER @@ -854,6 +855,7 @@ void QXmlStreamReaderPrivate::init() rawReadBuffer.clear(); dataBuffer.clear(); readBuffer.clear(); + tagStackStringStorageSize = initialTagStackStringStorageSize; type = QXmlStreamReader::NoToken; error = QXmlStreamReader::NoError; diff --git a/src/corelib/xml/qxmlstream_p.h b/src/corelib/xml/qxmlstream_p.h index 68b7ff7af3..448764ab58 100644 --- a/src/corelib/xml/qxmlstream_p.h +++ b/src/corelib/xml/qxmlstream_p.h @@ -697,6 +697,7 @@ public: QXmlStreamSimpleStack namespaceDeclarations; QString tagStackStringStorage; int tagStackStringStorageSize; + int initialTagStackStringStorageSize; bool tagsDone; inline QStringRef addToStringStorage(const QStringRef &s) { -- cgit v1.2.3