Fix double borrow mut in CachedOnDiskCorpus (#347)
This commit is contained in:
parent
28c5e59fb2
commit
f0daeb377e
@ -66,19 +66,18 @@ where
|
|||||||
let testcase = { self.inner.get(idx)? };
|
let testcase = { self.inner.get(idx)? };
|
||||||
if testcase.borrow().input().is_none() {
|
if testcase.borrow().input().is_none() {
|
||||||
let _ = testcase.borrow_mut().load_input()?;
|
let _ = testcase.borrow_mut().load_input()?;
|
||||||
let current = *self.current();
|
let mut borrowed_num = 0;
|
||||||
while self.cached_indexes.borrow().len() >= self.cache_max_len {
|
while self.cached_indexes.borrow().len() >= self.cache_max_len {
|
||||||
let removed = self.cached_indexes.borrow_mut().pop_front().unwrap();
|
let removed = self.cached_indexes.borrow_mut().pop_front().unwrap();
|
||||||
if let Some(cur) = current {
|
if let Ok(mut borrowed) = self.inner.get(removed)?.try_borrow_mut() {
|
||||||
if cur == removed {
|
*borrowed.input_mut() = None;
|
||||||
self.cached_indexes.borrow_mut().push_back(cur);
|
} else {
|
||||||
if self.cache_max_len == 1 {
|
self.cached_indexes.borrow_mut().push_back(removed);
|
||||||
break;
|
borrowed_num += 1;
|
||||||
}
|
if self.cache_max_len == borrowed_num {
|
||||||
continue;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*self.inner.get(removed)?.borrow_mut().input_mut() = None;
|
|
||||||
}
|
}
|
||||||
self.cached_indexes.borrow_mut().push_back(idx);
|
self.cached_indexes.borrow_mut().push_back(idx);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user