diff options
Diffstat (limited to '3rdparty/lzma/CPP/7zip/Compress/LzmaEncoder.cpp')
-rw-r--r-- | 3rdparty/lzma/CPP/7zip/Compress/LzmaEncoder.cpp | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/3rdparty/lzma/CPP/7zip/Compress/LzmaEncoder.cpp b/3rdparty/lzma/CPP/7zip/Compress/LzmaEncoder.cpp index 80e12f181dd..0a7e294d4f9 100644 --- a/3rdparty/lzma/CPP/7zip/Compress/LzmaEncoder.cpp +++ b/3rdparty/lzma/CPP/7zip/Compress/LzmaEncoder.cpp @@ -12,29 +12,21 @@ namespace NCompress { namespace NLzma { -static void *SzBigAlloc(void *, size_t size) { return BigAlloc(size); } -static void SzBigFree(void *, void *address) { BigFree(address); } -static ISzAlloc g_BigAlloc = { SzBigAlloc, SzBigFree }; - -static void *SzAlloc(void *, size_t size) { return MyAlloc(size); } -static void SzFree(void *, void *address) { MyFree(address); } -static ISzAlloc g_Alloc = { SzAlloc, SzFree }; - CEncoder::CEncoder() { - _encoder = 0; + _encoder = NULL; _encoder = LzmaEnc_Create(&g_Alloc); - if (_encoder == 0) + if (!_encoder) throw 1; } CEncoder::~CEncoder() { - if (_encoder != 0) + if (_encoder) LzmaEnc_Destroy(_encoder, &g_Alloc, &g_BigAlloc); } -inline wchar_t GetUpperChar(wchar_t c) +static inline wchar_t GetUpperChar(wchar_t c) { if (c >= 'a' && c <= 'z') c -= 0x20; @@ -51,22 +43,21 @@ static int ParseMatchFinder(const wchar_t *s, int *btMode, int *numHashBytes) int numHashBytesLoc = (int)(*s++ - L'0'); if (numHashBytesLoc < 4 || numHashBytesLoc > 4) return 0; - if (*s++ != 0) + if (*s != 0) return 0; *btMode = 0; *numHashBytes = numHashBytesLoc; return 1; } + if (c != L'B') return 0; - if (GetUpperChar(*s++) != L'T') return 0; int numHashBytesLoc = (int)(*s++ - L'0'); if (numHashBytesLoc < 2 || numHashBytesLoc > 4) return 0; - c = GetUpperChar(*s++); - if (c != L'\0') + if (*s != 0) return 0; *btMode = 1; *numHashBytes = numHashBytesLoc; @@ -87,8 +78,8 @@ HRESULT SetLzmaProp(PROPID propID, const PROPVARIANT &prop, CLzmaEncProps &ep) return S_OK; if (propID == NCoderPropID::kReduceSize) { - if (prop.vt == VT_UI8 && prop.uhVal.QuadPart < (UInt32)(Int32)-1) - ep.reduceSize = (UInt32)prop.uhVal.QuadPart; + if (prop.vt == VT_UI8) + ep.reduceSize = prop.uhVal.QuadPart; return S_OK; } if (prop.vt != VT_UI4) @@ -124,7 +115,7 @@ STDMETHODIMP CEncoder::SetCoderProperties(const PROPID *propIDs, switch (propID) { case NCoderPropID::kEndMarker: - if (prop.vt != VT_BOOL) return E_INVALIDARG; props.writeEndMark = (prop.boolVal == VARIANT_TRUE); break; + if (prop.vt != VT_BOOL) return E_INVALIDARG; props.writeEndMark = (prop.boolVal != VARIANT_FALSE); break; default: RINOK(SetLzmaProp(propID, prop, props)); } @@ -148,6 +139,7 @@ STDMETHODIMP CEncoder::Code(ISequentialInStream *inStream, ISequentialOutStream CCompressProgressWrap progressWrap(progress); SRes res = LzmaEnc_Encode(_encoder, &outWrap.p, &inWrap.p, progress ? &progressWrap.p : NULL, &g_Alloc, &g_BigAlloc); + _inputProcessed = inWrap.Processed; if (res == SZ_ERROR_READ && inWrap.Res != S_OK) return inWrap.Res; if (res == SZ_ERROR_WRITE && outWrap.Res != S_OK) @@ -156,5 +148,5 @@ STDMETHODIMP CEncoder::Code(ISequentialInStream *inStream, ISequentialOutStream return progressWrap.Res; return SResToHRESULT(res); } - + }} |