Skip to content

Commit 1442539

Browse files
fix(delta): fix bug where we would exit before writing the last chunk
1 parent eff4c6d commit 1442539

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/delta.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,16 +90,18 @@ fn read_varint(base_offset: usize, bytes: &[u8]) -> (usize, usize) {
9090
impl std::io::Read for DeltaDecoderStream {
9191
fn read(&mut self, mut buf: &mut [u8]) -> std::io::Result<usize> {
9292
let mut written = 0;
93-
while self.index < self.instructions.len() {
93+
loop {
9494
let (next_state, exhausted) = match &self.state {
9595
DeltaDecoderState::Done => {
9696
if self.written != self.output_size {
9797
return Err(std::io::ErrorKind::WriteZero.into())
9898
}
99-
return Ok(0)
99+
return Ok(written)
100100
},
101+
101102
DeltaDecoderState::NextCommand => {
102-
if self.index == self.instructions.len() {
103+
if self.index >= self.instructions.len() {
104+
self.written += written;
103105
(DeltaDecoderState::Done, false)
104106
} else {
105107
let cmd = self.instructions[self.index];
@@ -150,7 +152,6 @@ impl std::io::Read for DeltaDecoderStream {
150152
let extent = state.extent - wrote;
151153
let offset = state.offset + wrote;
152154
written += wrote;
153-
154155
if extent == 0 {
155156
(DeltaDecoderState::NextCommand, false)
156157
} else {

0 commit comments

Comments
 (0)