From 421c4886ac592ea55fb36ea10c9c8a6e3df8a91c Mon Sep 17 00:00:00 2001 From: Titus Wormer Date: Fri, 8 Jul 2022 18:07:59 +0200 Subject: Fix bug around forcibly closed flow exits --- src/content/document.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src') diff --git a/src/content/document.rs b/src/content/document.rs index 0c95eed..0112d52 100644 --- a/src/content/document.rs +++ b/src/content/document.rs @@ -295,11 +295,26 @@ fn exit_containers( if info.stack.len() > size { // To do: inject these somewhere? Fix positions? println!("closing flow. To do: are these resulting exits okay?"); + let index = tokenizer.events.len(); let result = tokenizer.flush(info.next); info.next = Box::new(flow); // This is weird but Rust needs a function there. assert!(matches!(result.0, State::Ok)); assert!(result.1.is_none()); + let mut end = tokenizer.events.len(); + while end > 0 && end > index { + if tokenizer.events[end - 1].token_type != Token::LineEnding { + break; + } + + end -= 1; + } + + let mut add = tokenizer.events.drain(index..end).collect::>(); + + println!("evs: {:#?}", add); + exits.append(&mut add); + println!(" setting `interrupt: false`"); tokenizer.interrupt = false; } -- cgit