Skip to content

Commit 6057cce

Browse files
committed
refactor
1 parent 6830e60 commit 6057cce

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

gitoxide-odb/src/pack/file/read.rs

+6-9
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,10 @@ impl File {
141141
// From oldest to most recent, apply all deltas, swapping the buffer back and forth
142142
// TODO: once we have more tests, we could optimize this memory-intensive work to
143143
// analyse the delta-chains to only copy data once.
144+
// `out` is: [source-buffer][target-buffer][max-delta-instructions-buffer]
144145
let (buffers, instructions) = out.split_at_mut(second_buffer_end);
145146
let (mut source_buf, mut target_buf) = buffers.split_at_mut(first_buffer_end);
146147

147-
// `out` is: [source-buffer][target-buffer][delta-1..delta-n]
148148
let mut last_result_size = None;
149149
for (
150150
delta_idx,
@@ -156,18 +156,15 @@ impl File {
156156
{
157157
let data = &mut instructions[..*decompressed_size];
158158
self.decompress_entry_inner(*pack_offset, data)?;
159-
let mut offset = 0;
160-
let (base_size, consumed) = delta_header_size(data);
161-
offset += consumed;
162-
let (result_size, consumed) = delta_header_size(&data[consumed..]);
163-
offset += consumed;
159+
let (base_size, data) = delta_header_size(data);
160+
let (result_size, data) = delta_header_size(data);
164161
if delta_idx + 1 == chain.len() {
165162
last_result_size = Some(result_size);
166163
}
167164
apply_delta(
168165
&source_buf[..base_size as usize],
169166
&mut target_buf[..result_size as usize],
170-
&data[offset..],
167+
data,
171168
);
172169
// use the target as source for the next delta
173170
std::mem::swap(&mut source_buf, &mut target_buf);
@@ -236,7 +233,7 @@ fn apply_delta(base: &[u8], mut target: &mut [u8], mut data: &[u8]) {
236233
}
237234
}
238235

239-
fn delta_header_size(d: &[u8]) -> (u64, usize) {
236+
fn delta_header_size(d: &[u8]) -> (u64, &[u8]) {
240237
let mut i = 0;
241238
let mut size = 0u64;
242239
let mut consumed = 0;
@@ -248,5 +245,5 @@ fn delta_header_size(d: &[u8]) -> (u64, usize) {
248245
break;
249246
}
250247
}
251-
(size, consumed)
248+
(size, &d[consumed..])
252249
}

0 commit comments

Comments
 (0)