diff options
Diffstat (limited to 'C/LzmaEnc.c')
-rw-r--r-- | C/LzmaEnc.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/C/LzmaEnc.c b/C/LzmaEnc.c index 6d13cac..37b2787 100644 --- a/C/LzmaEnc.c +++ b/C/LzmaEnc.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* LzmaEnc.c -- LZMA Encoder | 1 | /* LzmaEnc.c -- LZMA Encoder |
2 | 2023-04-13: Igor Pavlov : Public domain */ | 2 | 2024-01-24: Igor Pavlov : Public domain */ |
3 | 3 | ||
4 | #include "Precomp.h" | 4 | #include "Precomp.h" |
5 | 5 | ||
@@ -195,11 +195,11 @@ unsigned GetPosSlot1(UInt32 pos); | |||
195 | unsigned GetPosSlot1(UInt32 pos) | 195 | unsigned GetPosSlot1(UInt32 pos) |
196 | { | 196 | { |
197 | unsigned res; | 197 | unsigned res; |
198 | BSR2_RET(pos, res); | 198 | BSR2_RET(pos, res) |
199 | return res; | 199 | return res; |
200 | } | 200 | } |
201 | #define GetPosSlot2(pos, res) { BSR2_RET(pos, res); } | 201 | #define GetPosSlot2(pos, res) { BSR2_RET(pos, res) } |
202 | #define GetPosSlot(pos, res) { if (pos < 2) res = pos; else BSR2_RET(pos, res); } | 202 | #define GetPosSlot(pos, res) { if (pos < 2) res = pos; else BSR2_RET(pos, res) } |
203 | 203 | ||
204 | 204 | ||
205 | #else // ! LZMA_LOG_BSR | 205 | #else // ! LZMA_LOG_BSR |
@@ -512,7 +512,7 @@ struct CLzmaEnc | |||
512 | COPY_ARR(d, s, posEncoders) \ | 512 | COPY_ARR(d, s, posEncoders) \ |
513 | (d)->lenProbs = (s)->lenProbs; \ | 513 | (d)->lenProbs = (s)->lenProbs; \ |
514 | (d)->repLenProbs = (s)->repLenProbs; \ | 514 | (d)->repLenProbs = (s)->repLenProbs; \ |
515 | memcpy((d)->litProbs, (s)->litProbs, ((UInt32)0x300 << (p)->lclp) * sizeof(CLzmaProb)); | 515 | memcpy((d)->litProbs, (s)->litProbs, ((size_t)0x300 * sizeof(CLzmaProb)) << (p)->lclp); |
516 | 516 | ||
517 | void LzmaEnc_SaveState(CLzmaEncHandle p) | 517 | void LzmaEnc_SaveState(CLzmaEncHandle p) |
518 | { | 518 | { |
@@ -1040,14 +1040,14 @@ Z7_NO_INLINE static void Z7_FASTCALL LenPriceEnc_UpdateTables( | |||
1040 | UInt32 price = b; | 1040 | UInt32 price = b; |
1041 | do | 1041 | do |
1042 | { | 1042 | { |
1043 | unsigned bit = sym & 1; | 1043 | const unsigned bit = sym & 1; |
1044 | sym >>= 1; | 1044 | sym >>= 1; |
1045 | price += GET_PRICEa(probs[sym], bit); | 1045 | price += GET_PRICEa(probs[sym], bit); |
1046 | } | 1046 | } |
1047 | while (sym >= 2); | 1047 | while (sym >= 2); |
1048 | 1048 | ||
1049 | { | 1049 | { |
1050 | unsigned prob = probs[(size_t)i + (1 << (kLenNumHighBits - 1))]; | 1050 | const unsigned prob = probs[(size_t)i + (1 << (kLenNumHighBits - 1))]; |
1051 | prices[(size_t)i * 2 ] = price + GET_PRICEa_0(prob); | 1051 | prices[(size_t)i * 2 ] = price + GET_PRICEa_0(prob); |
1052 | prices[(size_t)i * 2 + 1] = price + GET_PRICEa_1(prob); | 1052 | prices[(size_t)i * 2 + 1] = price + GET_PRICEa_1(prob); |
1053 | } | 1053 | } |
@@ -1056,7 +1056,7 @@ Z7_NO_INLINE static void Z7_FASTCALL LenPriceEnc_UpdateTables( | |||
1056 | 1056 | ||
1057 | { | 1057 | { |
1058 | unsigned posState; | 1058 | unsigned posState; |
1059 | size_t num = (p->tableSize - kLenNumLowSymbols * 2) * sizeof(p->prices[0][0]); | 1059 | const size_t num = (p->tableSize - kLenNumLowSymbols * 2) * sizeof(p->prices[0][0]); |
1060 | for (posState = 1; posState < numPosStates; posState++) | 1060 | for (posState = 1; posState < numPosStates; posState++) |
1061 | memcpy(p->prices[posState] + kLenNumLowSymbols * 2, p->prices[0] + kLenNumLowSymbols * 2, num); | 1061 | memcpy(p->prices[posState] + kLenNumLowSymbols * 2, p->prices[0] + kLenNumLowSymbols * 2, num); |
1062 | } | 1062 | } |
@@ -2696,12 +2696,12 @@ static SRes LzmaEnc_Alloc(CLzmaEnc *p, UInt32 keepWindowSize, ISzAllocPtr alloc, | |||
2696 | #endif | 2696 | #endif |
2697 | 2697 | ||
2698 | { | 2698 | { |
2699 | unsigned lclp = p->lc + p->lp; | 2699 | const unsigned lclp = p->lc + p->lp; |
2700 | if (!p->litProbs || !p->saveState.litProbs || p->lclp != lclp) | 2700 | if (!p->litProbs || !p->saveState.litProbs || p->lclp != lclp) |
2701 | { | 2701 | { |
2702 | LzmaEnc_FreeLits(p, alloc); | 2702 | LzmaEnc_FreeLits(p, alloc); |
2703 | p->litProbs = (CLzmaProb *)ISzAlloc_Alloc(alloc, ((UInt32)0x300 << lclp) * sizeof(CLzmaProb)); | 2703 | p->litProbs = (CLzmaProb *)ISzAlloc_Alloc(alloc, ((size_t)0x300 * sizeof(CLzmaProb)) << lclp); |
2704 | p->saveState.litProbs = (CLzmaProb *)ISzAlloc_Alloc(alloc, ((UInt32)0x300 << lclp) * sizeof(CLzmaProb)); | 2704 | p->saveState.litProbs = (CLzmaProb *)ISzAlloc_Alloc(alloc, ((size_t)0x300 * sizeof(CLzmaProb)) << lclp); |
2705 | if (!p->litProbs || !p->saveState.litProbs) | 2705 | if (!p->litProbs || !p->saveState.litProbs) |
2706 | { | 2706 | { |
2707 | LzmaEnc_FreeLits(p, alloc); | 2707 | LzmaEnc_FreeLits(p, alloc); |
@@ -2802,8 +2802,8 @@ static void LzmaEnc_Init(CLzmaEnc *p) | |||
2802 | } | 2802 | } |
2803 | 2803 | ||
2804 | { | 2804 | { |
2805 | UInt32 num = (UInt32)0x300 << (p->lp + p->lc); | 2805 | const size_t num = (size_t)0x300 << (p->lp + p->lc); |
2806 | UInt32 k; | 2806 | size_t k; |
2807 | CLzmaProb *probs = p->litProbs; | 2807 | CLzmaProb *probs = p->litProbs; |
2808 | for (k = 0; k < num; k++) | 2808 | for (k = 0; k < num; k++) |
2809 | probs[k] = kProbInitValue; | 2809 | probs[k] = kProbInitValue; |