summaryrefslogtreecommitdiffstats
path: root/MdeModulePkg/Library
diff options
context:
space:
mode:
authorLiming Gao <liming.gao@intel.com>2017-04-14 00:13:06 +0800
committerLiming Gao <liming.gao@intel.com>2017-04-14 10:28:59 +0800
commit2c8d2545f59bf00f0b2460dbeabee6645d130d3e (patch)
tree17d8d335baa17cb78e6b5e1ab1188e020c79b2fa /MdeModulePkg/Library
parentd63ed30bb508f46ec304cf1431a67c8f9f2fe0bf (diff)
downloadedk2-2c8d2545f59bf00f0b2460dbeabee6645d130d3e.tar.gz
edk2-2c8d2545f59bf00f0b2460dbeabee6645d130d3e.tar.bz2
edk2-2c8d2545f59bf00f0b2460dbeabee6645d130d3e.zip
MdeModulePkg BrotliLib: Fix the regression logic issue in loop
In V2, change logic to avoid use mtf[-1] style to get value. Roll back to previous logic, and use point + offset to get byte value. Cc: Bell Song <binx.song@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Bell Song <binx.song@intel.com>
Diffstat (limited to 'MdeModulePkg/Library')
-rw-r--r--MdeModulePkg/Library/BrotliCustomDecompressLib/dec/decode.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/MdeModulePkg/Library/BrotliCustomDecompressLib/dec/decode.c b/MdeModulePkg/Library/BrotliCustomDecompressLib/dec/decode.c
index 67f0ff2cd9..6557ba67d5 100644
--- a/MdeModulePkg/Library/BrotliCustomDecompressLib/dec/decode.c
+++ b/MdeModulePkg/Library/BrotliCustomDecompressLib/dec/decode.c
@@ -855,6 +855,7 @@ static BROTLI_NOINLINE void InverseMoveToFrontTransform(
uint32_t i = 4;
uint32_t upper_bound = state->mtf_upper_bound;
uint8_t* mtf = &state->mtf[4]; /* Make mtf[-1] addressable. */
+ uint8_t* mtft = &state->mtf[3];
/* Load endian-aware constant. */
const uint8_t b0123[4] = {0, 1, 2, 3};
uint32_t pattern;
@@ -875,10 +876,10 @@ static BROTLI_NOINLINE void InverseMoveToFrontTransform(
uint8_t value = mtf[index];
upper_bound |= (uint32_t)v[i];
v[i] = value;
- mtf[-1] = value;
- while (index > 0) {
+ mtft[0] = value;
+ while (index >= 0) {
+ mtft[index + 1] = mtft[index];
index--;
- mtf[index + 1] = mtf[index];
}
}
/* Remember amount of elements to be reinitialized. */