From 599d8b560bec8036c5ddda62a7bf0a540bdec396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Sun, 2 Feb 2025 04:17:44 +0100 Subject: [PATCH] Avoid sharing `State` when re-parsing `markdown` sections --- widget/src/markdown.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/widget/src/markdown.rs b/widget/src/markdown.rs index ea00d14f74..858ee281f3 100644 --- a/widget/src/markdown.rs +++ b/widget/src/markdown.rs @@ -129,12 +129,6 @@ impl Content { // Re-parse incomplete sections if new references are available if !self.incomplete.is_empty() { - let mut state = State { - leftover: String::new(), - references: self.state.references.clone(), - highlighter: None, - }; - self.incomplete.retain(|index, section| { if self.items.len() <= *index { return false; @@ -147,11 +141,19 @@ impl Content { .retain(|link| !self.state.references.contains_key(link)); 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)) = parse_with(&mut state, §ion.content).next() { self.items[*index] = item; } + + drop(state); } !section.broken_links.is_empty()