Fix encoding test failures caused by incorrect padding calculation

This commit is contained in:
Nathan Fisher 2024-05-03 00:41:21 -04:00
parent 2236a572f7
commit d203aaf5d3

View file

@ -80,9 +80,12 @@ impl<R: Read, W: Write> Encoder<R, W> {
num |= *n as u64;
}
}
let pad = n_bytes * 8 % 6;
let mut outlen = n_bytes * 8 / 6;
if n_bytes * 8 % 6 > 0 {
outlen += 1;
}
for idx in (0..4).rev() {
if pad == 0 || idx < 4 - pad {
if outlen == 4 || idx < outlen {
let b = num & 0b111111;
obuf[idx] = self.alphabet.items[b as usize];
}
@ -96,7 +99,7 @@ impl<R: Read, W: Write> Encoder<R, W> {
char::try_from(obuf[2]).unwrap(),
char::try_from(obuf[3]).unwrap()
)?;
if pad > 0 {
if outlen < 4 {
break;
}
}