diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2022-08-29 13:28:48 -0300 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2022-08-31 16:55:00 -0300 |
commit | f12321288009119552df10df75c77228f6bac0db (patch) | |
tree | 7f14b8b2ed813924ba2d4d5f69c379ec2e0b8ad5 /src/tools/rcc | |
parent | 0f2397f03d6dc84ed1157e5a78c3298a1cdd7c85 (diff) |
RCC: fix zlib compression when --no-zstd was specified
Since we had code to default to zstd as the default algorithm instead of
"Best", we ended up not compressing anything.
[ChangeLog][rcc] Fixed a bug that caused rcc not to compress files with
any compression algorithm if the --no-zstd option was present.
Pick-to: 6.2 6.3 6.4
Fixes: QTBUG-106012
Change-Id: Ic6547f8247454b47baa8fffd170fddae429f82d2
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Diffstat (limited to 'src/tools/rcc')
-rw-r--r-- | src/tools/rcc/main.cpp | 12 | ||||
-rw-r--r-- | src/tools/rcc/rcc.cpp | 12 |
2 files changed, 10 insertions, 14 deletions
diff --git a/src/tools/rcc/main.cpp b/src/tools/rcc/main.cpp index 7323fc9bbb..2751bc39d6 100644 --- a/src/tools/rcc/main.cpp +++ b/src/tools/rcc/main.cpp @@ -227,12 +227,16 @@ int runRcc(int argc, char *argv[]) if (parser.isSet(compressionAlgoOption)) library.setCompressionAlgorithm(RCCResourceLibrary::parseCompressionAlgorithm(parser.value(compressionAlgoOption), &errorMsg)); - if (formatVersion < 3 && library.compressionAlgorithm() == RCCResourceLibrary::CompressionAlgorithm::Zstd) - errorMsg = "Zstandard compression requires format version 3 or higher"_L1; - if (parser.isSet(nocompressOption)) - library.setCompressionAlgorithm(RCCResourceLibrary::CompressionAlgorithm::None); if (parser.isSet(noZstdOption)) library.setNoZstd(true); + if (library.compressionAlgorithm() == RCCResourceLibrary::CompressionAlgorithm::Zstd) { + if (formatVersion < 3) + errorMsg = "Zstandard compression requires format version 3 or higher"_L1; + if (library.noZstd()) + errorMsg = "--compression-algo=zstd and --no-zstd both specified."_L1; + } + if (parser.isSet(nocompressOption)) + library.setCompressionAlgorithm(RCCResourceLibrary::CompressionAlgorithm::None); if (parser.isSet(compressOption) && errorMsg.isEmpty()) { int level = library.parseCompressionLevel(library.compressionAlgorithm(), parser.value(compressOption), &errorMsg); library.setCompressLevel(level); diff --git a/src/tools/rcc/rcc.cpp b/src/tools/rcc/rcc.cpp index 0eefeab065..db2a821b95 100644 --- a/src/tools/rcc/rcc.cpp +++ b/src/tools/rcc/rcc.cpp @@ -35,14 +35,6 @@ enum { CONSTANT_COMPRESSTHRESHOLD_DEFAULT = 70 }; -#if QT_CONFIG(zstd) && QT_VERSION >= QT_VERSION_CHECK(6,0,0) -# define CONSTANT_COMPRESSALGO_DEFAULT RCCResourceLibrary::CompressionAlgorithm::Zstd -#elif !defined(QT_NO_COMPRESS) -# define CONSTANT_COMPRESSALGO_DEFAULT RCCResourceLibrary::CompressionAlgorithm::Zlib -#else -# define CONSTANT_COMPRESSALGO_DEFAULT RCCResourceLibrary::CompressionAlgorithm::None -#endif - void RCCResourceLibrary::write(const char *str, int len) { int n = m_out.size(); @@ -87,7 +79,7 @@ public: QLocale::Language language = QLocale::C, QLocale::Territory territory = QLocale::AnyTerritory, uint flags = NoFlags, - RCCResourceLibrary::CompressionAlgorithm compressAlgo = CONSTANT_COMPRESSALGO_DEFAULT, + RCCResourceLibrary::CompressionAlgorithm compressAlgo = RCCResourceLibrary::CompressionAlgorithm::Best, int compressLevel = CONSTANT_COMPRESSLEVEL_DEFAULT, int compressThreshold = CONSTANT_COMPRESSTHRESHOLD_DEFAULT, bool noZstd = false); @@ -438,7 +430,7 @@ RCCResourceLibrary::RCCResourceLibrary(quint8 formatVersion) : m_root(nullptr), m_format(C_Code), m_verbose(false), - m_compressionAlgo(CONSTANT_COMPRESSALGO_DEFAULT), + m_compressionAlgo(CompressionAlgorithm::Best), m_compressLevel(CONSTANT_COMPRESSLEVEL_DEFAULT), m_compressThreshold(CONSTANT_COMPRESSTHRESHOLD_DEFAULT), m_treeOffset(0), |