From 2e7cfd5637f7e3959e344dee6f0f87384107b1b2 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 29 Oct 2023 21:44:15 -0400 Subject: [PATCH] Only parse footnote definitions if they target a reference that exists. --- src/intermediate/registry.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/intermediate/registry.rs b/src/intermediate/registry.rs index 7b8f466..b34d88b 100644 --- a/src/intermediate/registry.rs +++ b/src/intermediate/registry.rs @@ -99,6 +99,16 @@ pub(crate) async fn register_footnote_definition<'orig, 'parse>( label: &'parse str, definition: &'orig Vec>, ) -> Result<(), CustomError> { + let has_existing: bool = { + let mut registry = registry.lock().unwrap(); + registry + .footnote_ids + .iter_mut() + .any(|(id, _definition)| *id == Some(label)) + }; + if !has_existing { + return Ok(()); + } let contents = convert_definition_contents(registry.clone(), definition).await?; let mut registry = registry.lock().unwrap(); if let Some((_existing_id, existing_definition)) = registry