From 1b06c07115d7da4fb2af05d30647d822c3ccae7a Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Wed, 23 Sep 2020 19:32:35 +0200 Subject: Don't store QTextHtmlParserNode by value in a QList This is a performance bottleneck as the parse nodes are huge and we don't want to reallocate them all the time. Fixes: QTBUG-86354 Change-Id: Ia437acbb5b2c8af1723932d2cd96ba2ae48a871b Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/text/qtexthtmlparser_p.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/gui/text/qtexthtmlparser_p.h') diff --git a/src/gui/text/qtexthtmlparser_p.h b/src/gui/text/qtexthtmlparser_p.h index 4bfdab124b..2650c9cc3e 100644 --- a/src/gui/text/qtexthtmlparser_p.h +++ b/src/gui/text/qtexthtmlparser_p.h @@ -281,9 +281,13 @@ public: MarginBottom, MarginLeft }; + ~QTextHtmlParser() + { + qDeleteAll(nodes); + } - inline const QTextHtmlParserNode &at(int i) const { return nodes.at(i); } - inline QTextHtmlParserNode &operator[](int i) { return nodes[i]; } + inline const QTextHtmlParserNode &at(int i) const { return *nodes.at(i); } + inline QTextHtmlParserNode &operator[](int i) { return *nodes[i]; } inline int count() const { return nodes.count(); } inline int last() const { return nodes.count()-1; } int depth(int i) const; @@ -308,7 +312,7 @@ public: static int lookupElement(const QString &element); protected: QTextHtmlParserNode *newNode(int parent); - QList nodes; + QList nodes; QString txt; int pos, len; -- cgit v1.2.3