diff options
author | Roman Pasechnik <roman@pasechnik.net> | 2013-02-18 16:08:28 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-03-05 03:05:45 +0100 |
commit | 342c99ff45c1e6ef524b6045571900fd7408d635 (patch) | |
tree | d48261c68d94bf80b54a2aff4f7e5ae706b6ae45 /src/corelib/xml | |
parent | f9497b1a541627a6e2239a0c00b37307da6a93f2 (diff) |
Fixed memory leak in QXmlStreamReader
Fixed memory leak caused by repetitive usage of the same
QXmlStreamReader instance.
Task-number: QTBUG-27889
Change-Id: I673f4d26bae1503cb43e972f95b418dbf6d6fd89
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Diffstat (limited to 'src/corelib/xml')
-rw-r--r-- | src/corelib/xml/qxmlstream.cpp | 2 | ||||
-rw-r--r-- | src/corelib/xml/qxmlstream_p.h | 1 |
2 files changed, 3 insertions, 0 deletions
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<NamespaceDeclaration> namespaceDeclarations; QString tagStackStringStorage; int tagStackStringStorageSize; + int initialTagStackStringStorageSize; bool tagsDone; inline QStringRef addToStringStorage(const QStringRef &s) { |