Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 32 additions & 37 deletions libbz2-rs-sys/src/blocksort.rs
Original file line number Diff line number Diff line change
Expand Up @@ -125,30 +125,32 @@ fn fallbackQSort3(fmap: &mut [u32], eclass: &[u32], loSt: i32, hiSt: i32) {

loop {
while unLo <= unHi {
match eclass[fmap[unLo as usize] as usize].cmp(&med) {
Ordering::Greater => break,
Ordering::Equal => {
fmap.swap(unLo as usize, ltLo as usize);
ltLo += 1;
unLo += 1;
}
Ordering::Less => {
unLo += 1;
}
let a = eclass[fmap[unLo as usize] as usize];
let b = med;

if a > b {
break;
} else if a == b {
fmap.swap(unLo as usize, ltLo as usize);
ltLo += 1;
unLo += 1;
} else {
unLo += 1;
}
}

while unLo <= unHi {
match eclass[fmap[unHi as usize] as usize].cmp(&med) {
Ordering::Less => break,
Ordering::Equal => {
fmap.swap(unHi as usize, gtHi as usize);
gtHi -= 1;
unHi -= 1;
}
Ordering::Greater => {
unHi -= 1;
}
let a = eclass[fmap[unHi as usize] as usize];
let b = med;

if a < b {
break;
} else if a == b {
fmap.swap(unHi as usize, gtHi as usize);
gtHi -= 1;
unHi -= 1;
} else {
unHi -= 1;
}
}

Expand Down Expand Up @@ -225,14 +227,8 @@ fn fallbackSort(
let mut ftab: [i32; 257] = [0; 257];
let mut ftabCopy: [i32; 256] = [0; 256];
let mut H: i32;
let mut i: i32;
let mut j: i32;
let mut k: i32;
let mut l: i32;
let mut r: i32;
let mut cc: i32;
let mut cc1: i32;
let mut nNotDone: i32;

/*--
Initial 1-char radix sort to generate
Expand Down Expand Up @@ -287,21 +283,20 @@ fn fallbackSort(
if verb >= 4 {
debug_log!(" depth {:>6} has ", H);
}
j = 0;
i = 0;
while i < nblock {
let mut j = 0;
for (i, x) in fmap[..nblock as usize].iter().enumerate() {
if ISSET_BH!(i) {
j = i;
}
k = fmap[i as usize].wrapping_sub(H as c_uint) as i32;
k = x.wrapping_sub(H as c_uint) as i32;
if k < 0 {
k += nblock;
}
arr2.eclass()[k as usize] = j as u32;
i += 1;
}
nNotDone = 0;
r = -1;

let mut nNotDone = 0;
let mut r = -1;
loop {
/*-- find the next non-singleton bucket --*/
k = r + 1;
Expand Down Expand Up @@ -342,11 +337,11 @@ fn fallbackSort(
fallbackQSort3(fmap, arr2.eclass(), l, r);

/*-- scan bucket and generate header bits-- */
cc = -1;
for i in l..=r {
cc1 = arr2.eclass()[fmap[i as usize] as usize] as i32;
let mut cc = -1;
for (i, x) in fmap[l as usize..=r as usize].iter().enumerate() {
let cc1 = arr2.eclass()[*x as usize] as i32;
if cc != cc1 {
SET_BH!(i);
SET_BH!(l + i as i32);
cc = cc1;
}
}
Expand Down
Loading