summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archival/libarchive/bz/blocksort.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/archival/libarchive/bz/blocksort.c b/archival/libarchive/bz/blocksort.c
index a1ee592..578f6d4 100644
--- a/archival/libarchive/bz/blocksort.c
+++ b/archival/libarchive/bz/blocksort.c
@@ -468,15 +468,16 @@ void mainSimpleSort(uint32_t* ptr,
int32_t d,
int32_t* budget)
{
- int32_t bigN;
- int hp;
-
- bigN = hi - lo + 1;
- if (bigN < 2) return;
-
- hp = 0;
- while (incs[hp] < bigN) hp++;
- hp--;
+ /* At which increment to start? */
+ int hp = 0;
+ {
+ int bigN = hi - lo;
+ if (bigN <= 0)
+ return;
+ while (incs[hp] <= bigN)
+ hp++;
+ hp--;
+ }
for (; hp >= 0; hp--) {
int32_t i;
@@ -754,22 +755,22 @@ void mainSort(EState* state,
#if CONFIG_BZIP2_FAST >= 2
for (; i >= 3; i -= 4) {
quadrant[i] = 0;
- j = (j >> 8) | (((uint16_t)block[i]) << 8);
+ j = (j >> 8) | (((unsigned)block[i]) << 8);
ftab[j]++;
quadrant[i-1] = 0;
- j = (j >> 8) | (((uint16_t)block[i-1]) << 8);
+ j = (j >> 8) | (((unsigned)block[i-1]) << 8);
ftab[j]++;
quadrant[i-2] = 0;
- j = (j >> 8) | (((uint16_t)block[i-2]) << 8);
+ j = (j >> 8) | (((unsigned)block[i-2]) << 8);
ftab[j]++;
quadrant[i-3] = 0;
- j = (j >> 8) | (((uint16_t)block[i-3]) << 8);
+ j = (j >> 8) | (((unsigned)block[i-3]) << 8);
ftab[j]++;
}
#endif
for (; i >= 0; i--) {
quadrant[i] = 0;
- j = (j >> 8) | (((uint16_t)block[i]) << 8);
+ j = (j >> 8) | (((unsigned)block[i]) << 8);
ftab[j]++;
}