From 6fdd986bd9d9eacdfa6210605eb63371136d0e55 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 20 Sep 2022 12:21:12 +0200 Subject: [PATCH] QPdfEngine: port from raw zlib to qCompress() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hotfix for disappearing zlib symbols caused by QTBUG-104972 and QTBUG-106542 fixes, to be merged later on. Pick-to: 6.4 6.3 6.2 Change-Id: I21e0bf13c866fa7bb45c7587c81e7fddddad90f9 Reviewed-by: Volker Hilsheimer Reviewed-by: MÃ¥rten Nordheim Reviewed-by: Shawn Rutledge --- src/gui/painting/qpdf.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp index 28d4216de9..848769d5b2 100644 --- a/src/gui/painting/qpdf.cpp +++ b/src/gui/painting/qpdf.cpp @@ -2280,16 +2280,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(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 {