Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '7zip/Archive/Zip/ZipAddCommon.cpp')
-rwxr-xr-x7zip/Archive/Zip/ZipAddCommon.cpp45
1 files changed, 32 insertions, 13 deletions
diff --git a/7zip/Archive/Zip/ZipAddCommon.cpp b/7zip/Archive/Zip/ZipAddCommon.cpp
index 84cada5b..c2b79212 100755
--- a/7zip/Archive/Zip/ZipAddCommon.cpp
+++ b/7zip/Archive/Zip/ZipAddCommon.cpp
@@ -198,34 +198,53 @@ HRESULT CAddCommon::Compress(ISequentialInStream *inStream, IOutStream *outStrea
if (method == NFileHeader::NCompressionMethod::kDeflated ||
method == NFileHeader::NCompressionMethod::kDeflated64)
{
- NWindows::NCOM::CPropVariant properties[2] =
+ NWindows::NCOM::CPropVariant properties[] =
{
_options.NumPasses,
- _options.NumFastBytes
+ _options.NumFastBytes,
+ _options.NumMatchFinderCycles
};
- PROPID propIDs[2] =
+ PROPID propIDs[] =
{
NCoderPropID::kNumPasses,
- NCoderPropID::kNumFastBytes
+ NCoderPropID::kNumFastBytes,
+ NCoderPropID::kMatchFinderCycles
};
+ int numProps = sizeof(propIDs) / sizeof(propIDs[0]);
+ if (!_options.NumMatchFinderCyclesDefined)
+ numProps--;
CMyComPtr<ICompressSetCoderProperties> setCoderProperties;
- RINOK(_compressEncoder.QueryInterface(IID_ICompressSetCoderProperties, &setCoderProperties));
- RINOK(setCoderProperties->SetCoderProperties(propIDs, properties, 2));
- } else if (method == NFileHeader::NCompressionMethod::kBZip2)
+ _compressEncoder.QueryInterface(IID_ICompressSetCoderProperties, &setCoderProperties);
+ if (setCoderProperties)
+ {
+ RINOK(setCoderProperties->SetCoderProperties(propIDs, properties, numProps));
+ }
+ }
+ else if (method == NFileHeader::NCompressionMethod::kBZip2)
{
- NWindows::NCOM::CPropVariant properties[1] =
+ NWindows::NCOM::CPropVariant properties[] =
{
+ _options.DicSize,
_options.NumPasses
+ #ifdef COMPRESS_MT
+ , _options.NumThreads
+ #endif
};
- PROPID propIDs[1] =
+ PROPID propIDs[] =
{
- NCoderPropID::kNumPasses,
+ NCoderPropID::kDictionarySize,
+ NCoderPropID::kNumPasses
+ #ifdef COMPRESS_MT
+ , NCoderPropID::kNumThreads
+ #endif
};
CMyComPtr<ICompressSetCoderProperties> setCoderProperties;
- RINOK(_compressEncoder.QueryInterface(IID_ICompressSetCoderProperties, &setCoderProperties));
- RINOK(setCoderProperties->SetCoderProperties(propIDs, properties, 1));
+ _compressEncoder.QueryInterface(IID_ICompressSetCoderProperties, &setCoderProperties);
+ if (setCoderProperties)
+ {
+ RINOK(setCoderProperties->SetCoderProperties(propIDs, properties, sizeof(propIDs) / sizeof(propIDs[0])));
+ }
}
-
}
CMyComPtr<ISequentialOutStream> outStreamNew;
if (_options.PasswordIsDefined)