Details
-
Bug
-
Resolution: Done
-
P2: Important
-
6.0.4, 6.1.3, 6.2.5, 6.3.1, 6.4.0 Beta4
-
None
-
-
8
-
2fd990b386 (qt/qtbase/dev) 2fd990b386 (qt/tqtc-qtbase/dev) 93aa02e671 (qt/qtbase/6.4) 93aa02e671 (qt/tqtc-qtbase/6.4) 2a4d5b41cb (qt/tqtc-qtbase/6.2) 93aa02e671 (qt/tqtc-qtbase/6.4.1) 93aa02e671 (qt/tqtc-qtbase/tqtc/qtinsight-6.4)
-
Foundation Sprint 65, Foundation Sprint 66, Foundation Sprint 67, Foundation Sprint 68
Description
While working on QTBUG-104972, which fixed the most obvious problems with the widening of the functions from 32-bit to 64-bit-sized Qt containers, it turned out that, due to the zlib API using ulong as the size type, 64-bit Windows is unable to handle > 4GiB of (decompressed) data, because sizeof(ulong) is 32-bit on Windows. 64-bit Unix is unaffected, as sizeof(ulong) == 8 there.
To fix, instead of using the compress2() and uncompress() convenience functions, we can use zlib's the stream API (zstream/deflate()/inflate()) directly. Being a stream API, it should not be limited by the size of long.
Acceptance criteria:
- qCompress() can compress more than 4GiB of data on Windows-64
- qUncompress() can uncompress more than 4GiB of data on Windows-64
- functional benchmark for the above two is 64-bit Unix (post
QTBUG-104972) - the documentation, updated as part of
QTBUG-104972, is changed to reflect the removal of the Windows-64 limitation
Attachments
Issue Links
- resulted from
-
QTBUG-104972 qUncompress(qCompress()) round-trip fails for data > 2GiB
- Closed
- resulted in
-
QTBUG-107698 Improve output buffer estimation in qCompress()
- Open