summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2022-09-20 12:21:12 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-10-11 10:56:09 +0000
commit158eb90211c15358c054fe422a1a283163baaef2 (patch)
tree963cd0750e1a665c39ba5dea887a1311f9990935
parentf6f49a7025d5c17f44df3479e916bb4ce2568530 (diff)
QPdfEngine: port from raw zlib to qCompress()
Hotfix for disappearing zlib symbols caused by QTBUG-104972 and QTBUG-106542 fixes, to be merged later on. Change-Id: I21e0bf13c866fa7bb45c7587c81e7fddddad90f9 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 6fdd986bd9d9eacdfa6210605eb63371136d0e55) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/gui/painting/qpdf.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp
index 1de807e6fc..4336febc1a 100644
--- a/src/gui/painting/qpdf.cpp
+++ b/src/gui/painting/qpdf.cpp
@@ -2312,16 +2312,15 @@ int QPdfEnginePrivate::writeCompressed(const char *src, int len)
{
#ifndef QT_NO_COMPRESS
if (do_compress) {
- uLongf destLen = len + len/100 + 13; // zlib requirement
- Bytef* dest = new Bytef[destLen];
- if (Z_OK == ::compress(dest, &destLen, (const Bytef*) src, (uLongf)len)) {
- stream->writeRawData((const char*)dest, destLen);
+ const QByteArray data = qCompress(reinterpret_cast<const uchar *>(src), len);
+ constexpr qsizetype HeaderSize = 4;
+ if (!data.isNull()) {
+ stream->writeRawData(data.data() + HeaderSize, data.size() - HeaderSize);
+ len = data.size() - HeaderSize;
} else {
qWarning("QPdfStream::writeCompressed: Error in compress()");
- destLen = 0;
+ len = 0;
}
- delete [] dest;
- len = destLen;
} else
#endif
{