Skip to content

Commit a794133

Browse files
bors[bot]caiyuanhao
andauthored
Merge #689
689: fix boundary case of assembler::remove_contig_at r=Dirbaio a=hikaricai Found a bug when learning source code of smoltcp. Co-authored-by: caiyuanhao <caiyuanhao@hiakriMacBook-Pro.local>
2 parents 93b4c82 + bd220eb commit a794133

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

src/storage/assembler.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,9 @@ impl Assembler {
171171
}
172172

173173
// Removing the last one.
174-
self.contigs[at] = Contig::empty();
175-
&mut self.contigs[at]
174+
let p = &mut self.contigs[self.contigs.len() - 1];
175+
*p = Contig::empty();
176+
p
176177
}
177178

178179
/// Add a contig at the given index, and return a pointer to it.
@@ -476,6 +477,18 @@ mod test {
476477
assert_eq!(assr, contigs![(4, 4), (4, 0)]);
477478
}
478479

480+
#[test]
481+
fn test_boundary_case_remove_front() {
482+
let mut vec = vec![(1, 1); CONTIG_COUNT];
483+
vec[0] = (0, 2);
484+
let mut assr = Assembler::from(vec);
485+
assert_eq!(assr.remove_front(), Some(2));
486+
let mut vec = vec![(1, 1); CONTIG_COUNT];
487+
vec[CONTIG_COUNT - 1] = (2, 0);
488+
let exp_assr = Assembler::from(vec);
489+
assert_eq!(assr, exp_assr);
490+
}
491+
479492
#[test]
480493
fn test_iter_empty() {
481494
let assr = Assembler::new(16);

0 commit comments

Comments
 (0)