summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobert Loehning <robert.loehning@qt.io>2020-08-20 18:48:37 +0200
committerRobert Loehning <robert.loehning@qt.io>2020-08-24 13:38:59 +0000
commitd71817248621651dc44d0ba67a74cd05d5f9619c (patch)
tree6be754adbb08ebb8267ea0ba31f213a1b73e2722 /src
parenta5748859061182b7c18fe74f11afd4a57a398687 (diff)
downloadqtsvg-d71817248621651dc44d0ba67a74cd05d5f9619c.tar.gz
Initialize QSvgHandler with QBuffer instead of QByteArray
Reduces memory consumption significantly for huge files. Fixes: oss-fuzz-24347 Pick-to: 5.15 Change-Id: Iebf58d5f73030336d219ad770e1d1d2798c10067 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src')
-rw-r--r--src/svg/qsvgtinydocument.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/svg/qsvgtinydocument.cpp b/src/svg/qsvgtinydocument.cpp
index 12dd979..dd2c1ab 100644
--- a/src/svg/qsvgtinydocument.cpp
+++ b/src/svg/qsvgtinydocument.cpp
@@ -212,7 +212,10 @@ QSvgTinyDocument * QSvgTinyDocument::load(const QByteArray &contents)
}
#endif
- QSvgHandler handler(contents);
+ QBuffer buffer;
+ buffer.setData(contents);
+ buffer.open(QIODevice::ReadOnly);
+ QSvgHandler handler(&buffer);
QSvgTinyDocument *doc = nullptr;
if (handler.ok()) {