}
for f in files.iter().rev() {
- for free_space in free_spaces.iter_mut() {
+ for i in 0..free_spaces.len() {
+ let free_space = &mut free_spaces[i];
// Files are only move backward.
if free_space.pos >= f.pos {
break;
memory[free_space.pos..free_space.pos + f.size].fill(v);
memory[f.pos..f.pos + f.size].fill(EMPTY);
free_space.size -= f.size;
- free_space.pos += f.size;
+ if free_space.size == 0 {
+ free_spaces.remove(i);
+ } else {
+ free_space.pos += f.size;
+ }
break;
}
}