Fix double borrow mut in CachedOnDiskCorpus (#347)

This commit is contained in:
Andrea Fioraldi 2021-11-04 17:49:07 +01:00 committed by GitHub
parent 28c5e59fb2
commit f0daeb377e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -66,20 +66,19 @@ where
let testcase = { self.inner.get(idx)? };
if testcase.borrow().input().is_none() {
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 {
let removed = self.cached_indexes.borrow_mut().pop_front().unwrap();
if let Some(cur) = current {
if cur == removed {
self.cached_indexes.borrow_mut().push_back(cur);
if self.cache_max_len == 1 {
if let Ok(mut borrowed) = self.inner.get(removed)?.try_borrow_mut() {
*borrowed.input_mut() = None;
} else {
self.cached_indexes.borrow_mut().push_back(removed);
borrowed_num += 1;
if self.cache_max_len == borrowed_num {
break;
}
continue;
}
}
*self.inner.get(removed)?.borrow_mut().input_mut() = None;
}
self.cached_indexes.borrow_mut().push_back(idx);
}
Ok(testcase)