Skip to content

Commit 6ed9a9d

Browse files
Flush elements when there are too many
1 parent b28eabc commit 6ed9a9d

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

src/librustdoc/html/highlight.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,13 +407,26 @@ impl<'a, F: Write> TokenHandler<'a, '_, F> {
407407
None
408408
}
409409

410+
fn maybe_write_content(&mut self) {
411+
if self.element_stack.parent.is_none()
412+
&& self.element_stack.class.is_none()
413+
&& !self.element_stack.pending_exit
414+
// Completely random number.
415+
&& self.element_stack.elements.len() > 30
416+
{
417+
self.element_stack.write_content(self.out, &self.href_context);
418+
self.element_stack.elements.clear();
419+
}
420+
}
421+
410422
fn push_element_without_backline_check(
411423
&mut self,
412424
class: Option<Class>,
413425
text: Cow<'a, str>,
414426
needs_escape: bool,
415427
) {
416-
self.element_stack.push_element(Element::new(class, text, needs_escape))
428+
self.element_stack.push_element(Element::new(class, text, needs_escape));
429+
self.maybe_write_content();
417430
}
418431

419432
fn push_element(&mut self, class: Option<Class>, text: Cow<'a, str>) {
@@ -486,6 +499,7 @@ impl<'a, F: Write> TokenHandler<'a, '_, F> {
486499
for class in old_stack.iter().rev() {
487500
self.element_stack.enter_stack(ElementStack::new_with_class(Some(*class)));
488501
}
502+
self.maybe_write_content();
489503
}
490504
}
491505

0 commit comments

Comments
 (0)