/* LzmaDec.c -- LZMA Decoder\r
-2018-02-28 : Igor Pavlov : Public domain */\r
+2018-07-04 : Igor Pavlov : Public domain */\r
\r
#include "Precomp.h"\r
\r
-/* #include "CpuArch.h" */\r
-#include "LzmaDec.h"\r
-\r
#ifndef EFIAPI\r
#include <string.h>\r
#endif\r
\r
+/* #include "CpuArch.h" */\r
+#include "LzmaDec.h"\r
+\r
#define kNumTopBits 24\r
#define kTopValue ((UInt32)1 << kNumTopBits)\r
\r
\r
#define NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | (*buf++); }\r
\r
-#define IF_BIT_0(p) ttt = *(p); NORMALIZE; bound = (range >> kNumBitModelTotalBits) * ttt; if (code < bound)\r
+#define IF_BIT_0(p) ttt = *(p); NORMALIZE; bound = (range >> kNumBitModelTotalBits) * (UInt32)ttt; if (code < bound)\r
#define UPDATE_0(p) range = bound; *(p) = (CLzmaProb)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits));\r
#define UPDATE_1(p) range -= bound; code -= bound; *(p) = (CLzmaProb)(ttt - (ttt >> kNumMoveBits));\r
#define GET_BIT2(p, i, A0, A1) IF_BIT_0(p) \\r
\r
#define NORMALIZE_CHECK if (range < kTopValue) { if (buf >= bufLimit) return DUMMY_ERROR; range <<= 8; code = (code << 8) | (*buf++); }\r
\r
-#define IF_BIT_0_CHECK(p) ttt = *(p); NORMALIZE_CHECK; bound = (range >> kNumBitModelTotalBits) * ttt; if (code < bound)\r
+#define IF_BIT_0_CHECK(p) ttt = *(p); NORMALIZE_CHECK; bound = (range >> kNumBitModelTotalBits) * (UInt32)ttt; if (code < bound)\r
#define UPDATE_0_CHECK range = bound;\r
#define UPDATE_1_CHECK range -= bound; code -= bound;\r
#define GET_BIT2_CHECK(p, i, A0, A1) IF_BIT_0_CHECK(p) \\r
curLen = ((rem < len) ? (unsigned)rem : len);\r
pos = dicPos - rep0 + (dicPos < rep0 ? dicBufSize : 0);\r
\r
- processedPos += curLen;\r
+ processedPos += (UInt32)curLen;\r
\r
len -= curLen;\r
if (curLen <= dicBufSize - pos)\r
Byte *dest = dic + dicPos;\r
ptrdiff_t src = (ptrdiff_t)pos - (ptrdiff_t)dicPos;\r
const Byte *lim = dest + curLen;\r
- dicPos += curLen;\r
+ dicPos += (SizeT)curLen;\r
do\r
*(dest) = (Byte)*(dest + src);\r
while (++dest != lim);\r
p->buf = buf;\r
p->range = range;\r
p->code = code;\r
- p->remainLen = len;\r
+ p->remainLen = (UInt32)len;\r
p->dicPos = dicPos;\r
p->processedPos = processedPos;\r
p->reps[0] = rep0;\r
p->reps[1] = rep1;\r
p->reps[2] = rep2;\r
p->reps[3] = rep3;\r
- p->state = state;\r
+ p->state = (UInt32)state;\r
\r
return SZ_OK;\r
}\r
if (p->checkDicSize == 0 && p->prop.dicSize - p->processedPos <= len)\r
p->checkDicSize = p->prop.dicSize;\r
\r
- p->processedPos += len;\r
- p->remainLen -= len;\r
+ p->processedPos += (UInt32)len;\r
+ p->remainLen -= (UInt32)len;\r
while (len != 0)\r
{\r
len--;\r
}\r
\r
\r
-void LzmaDec_InitDicAndState(CLzmaDec *p, Bool initDic, Bool initState)\r
+void LzmaDec_InitDicAndState(CLzmaDec *p, BoolInt initDic, BoolInt initState)\r
{\r
p->remainLen = kMatchSpecLenStart + 1;\r
p->tempBufSize = 0;\r
p->tempBufSize = rem;\r
if (rem < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow)\r
{\r
- int dummyRes = LzmaDec_TryDummy(p, p->tempBuf, rem);\r
+ int dummyRes = LzmaDec_TryDummy(p, p->tempBuf, (SizeT)rem);\r
if (dummyRes == DUMMY_ERROR)\r
{\r
- (*srcLen) += lookAhead;\r
+ (*srcLen) += (SizeT)lookAhead;\r
*status = LZMA_STATUS_NEEDS_MORE_INPUT;\r
return SZ_OK;\r
}\r
return SZ_ERROR_FAIL; /* some internal error */\r
lookAhead -= rem;\r
}\r
- (*srcLen) += lookAhead;\r
+ (*srcLen) += (SizeT)lookAhead;\r
src += lookAhead;\r
- inSize -= lookAhead;\r
+ inSize -= (SizeT)lookAhead;\r
p->tempBufSize = 0;\r
}\r
}\r