mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
Fix/out of index (#3872)
This commit is contained in:
parent
d52889f45c
commit
a4e0a0824b
2 changed files with 21 additions and 9 deletions
|
@ -152,14 +152,23 @@ impl Collection {
|
||||||
let mut revlog_index = 0;
|
let mut revlog_index = 0;
|
||||||
for entry in revlog {
|
for entry in revlog {
|
||||||
let mut stats_entry = stats_revlog_entry(&entry);
|
let mut stats_entry = stats_revlog_entry(&entry);
|
||||||
let memory_state: FsrsMemoryState =
|
let memory_state: Option<FsrsMemoryState> = if revlog_index >= memory_states.len() {
|
||||||
if entry.id == item.filtered_revlogs[revlog_index].id {
|
// The removed revlog is in the end of the revlog, so we use the last memory
|
||||||
|
// state
|
||||||
|
Some(memory_states[memory_states.len() - 1].into())
|
||||||
|
} else if entry.id == item.filtered_revlogs[revlog_index].id {
|
||||||
revlog_index += 1;
|
revlog_index += 1;
|
||||||
memory_states[revlog_index - 1].into()
|
Some(memory_states[revlog_index - 1].into())
|
||||||
|
} else if revlog_index == 0 {
|
||||||
|
// The removed revlog is in the start of the revlog, so we don't have a memory
|
||||||
|
// state for it
|
||||||
|
None
|
||||||
} else {
|
} else {
|
||||||
memory_states[revlog_index].into()
|
// The removed revlog is in the middle of the revlog, so we use the memory
|
||||||
|
// state for the previous revlog entry
|
||||||
|
Some(memory_states[revlog_index].into())
|
||||||
};
|
};
|
||||||
stats_entry.memory_state = Some(memory_state.into());
|
stats_entry.memory_state = memory_state.map(|s| s.into());
|
||||||
result.push(stats_entry);
|
result.push(stats_entry);
|
||||||
}
|
}
|
||||||
Ok(result.into_iter().rev().collect())
|
Ok(result.into_iter().rev().collect())
|
||||||
|
|
|
@ -56,7 +56,10 @@ export function filterRevlogEntryByReviewKind(entry: RevlogEntry): boolean {
|
||||||
export function filterRevlog(revlog: RevlogEntry[]): RevlogEntry[] {
|
export function filterRevlog(revlog: RevlogEntry[]): RevlogEntry[] {
|
||||||
const result: RevlogEntry[] = [];
|
const result: RevlogEntry[] = [];
|
||||||
for (const entry of revlog) {
|
for (const entry of revlog) {
|
||||||
if (entry.reviewKind === RevlogEntry_ReviewKind.MANUAL && entry.ease === 0) {
|
if (
|
||||||
|
(entry.reviewKind === RevlogEntry_ReviewKind.MANUAL && entry.ease === 0)
|
||||||
|
|| entry.memoryState === undefined
|
||||||
|
) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
result.push(entry);
|
result.push(entry);
|
||||||
|
|
Loading…
Reference in a new issue