Avoid sharing State when re-parsing markdown sections

This commit is contained in:
Héctor Ramón Jiménez 2025-02-02 04:17:44 +01:00
parent 569ef13ac9
commit 599d8b560b
No known key found for this signature in database
GPG key ID: 7CC46565708259A7

View file

@ -129,12 +129,6 @@ impl Content {
// Re-parse incomplete sections if new references are available // Re-parse incomplete sections if new references are available
if !self.incomplete.is_empty() { if !self.incomplete.is_empty() {
let mut state = State {
leftover: String::new(),
references: self.state.references.clone(),
highlighter: None,
};
self.incomplete.retain(|index, section| { self.incomplete.retain(|index, section| {
if self.items.len() <= *index { if self.items.len() <= *index {
return false; return false;
@ -147,11 +141,19 @@ impl Content {
.retain(|link| !self.state.references.contains_key(link)); .retain(|link| !self.state.references.contains_key(link));
if broken_links_before != section.broken_links.len() { if broken_links_before != section.broken_links.len() {
let mut state = State {
leftover: String::new(),
references: self.state.references.clone(),
highlighter: None,
};
if let Some((item, _source, _broken_links)) = if let Some((item, _source, _broken_links)) =
parse_with(&mut state, &section.content).next() parse_with(&mut state, &section.content).next()
{ {
self.items[*index] = item; self.items[*index] = item;
} }
drop(state);
} }
!section.broken_links.is_empty() !section.broken_links.is_empty()