From 79d843524cf6b2f0f01f4f7649e24f6c8e8db41e Mon Sep 17 00:00:00 2001 From: aiongg Date: Thu, 22 Oct 2026 01:46:03 +0000 Subject: [PATCH] Integration: #2220 look up set-aside object numbers in a set fill_xref_gaps scanned every xref oddity for each object header; a file with many offset-0 rows and many headers took quadratic time. --- crates/cos/src/document.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/cos/src/document.rs b/crates/cos/src/document.rs index b24bea637..6d39d53db 100644 --- a/crates/cos/src/document.rs +++ b/crates/cos/src/document.rs @@ -1968,9 +1968,10 @@ impl Document { } else { HashSet::new() }; + let odd: HashSet = self.xref_oddities.iter().map(|(_, n)| *n).collect(); let mut found = 0usize; for (&num, &(offset, generation)) in &located { - let left_out = past_shift.contains(&num) || self.xref_oddities.iter().any(|(_, n)| *n == num); + let left_out = past_shift.contains(&num) || odd.contains(&num); if num != 0 && !filled.contains_key(&num) && left_out { filled.insert(num, XrefEntry::InFile { offset, generation }); found += 1;