From bc5cd4dba8dceed808a573c6201acd9d210dc315 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 23 Apr 2024 08:21:43 -0700 Subject: QResource: simplify map() to rely on the uncompressed data being there We can only call map() if we've already called open() and that will decompress the data. Pick-to: 6.5 6.6 6.7 Change-Id: I6979d02a7395405cbf23fffd17c8f1f77ca92b2b Reviewed-by: Ahmad Samir --- src/corelib/io/qresource.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/corelib/io/qresource.cpp') diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp index 005380720bd..bad11b1479f 100644 --- a/src/corelib/io/qresource.cpp +++ b/src/corelib/io/qresource.cpp @@ -1566,6 +1566,9 @@ uchar *QResourceFileEnginePrivate::map(qint64 offset, qint64 size, QFile::Memory { Q_Q(QResourceFileEngine); Q_UNUSED(flags); + Q_ASSERT_X(resource.compressionAlgorithm() == QResource::NoCompression + || !uncompressed.isNull(), "QFile::map()", + "open() should have uncompressed compressed resources"); qint64 max = resource.uncompressedSize(); qint64 end; @@ -1575,14 +1578,12 @@ uchar *QResourceFileEnginePrivate::map(qint64 offset, qint64 size, QFile::Memory return nullptr; } - const uchar *address = resource.data(); - if (resource.compressionAlgorithm() != QResource::NoCompression) { - uncompress(); - if (uncompressed.isNull()) - return nullptr; - address = reinterpret_cast(uncompressed.constData()); - } + const uchar *address = reinterpret_cast(uncompressed.constBegin()); + if (!uncompressed.isNull()) + return const_cast(address) + offset; + // resource was not compressed + address = resource.data(); return const_cast(address) + offset; } -- cgit v1.2.3