From b106d10202a8227f9e1a68b9e88470886907452c Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 6 Feb 2021 15:19:39 +0100 Subject: [PATCH] [EasyMark] Fix incorrect handling of non-ASCII characters --- egui/src/experimental/easy_mark_parser.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/egui/src/experimental/easy_mark_parser.rs b/egui/src/experimental/easy_mark_parser.rs index f47e5d4d..7d784094 100644 --- a/egui/src/experimental/easy_mark_parser.rs +++ b/egui/src/experimental/easy_mark_parser.rs @@ -299,12 +299,14 @@ impl<'a> Iterator for Parser<'a> { } // Swallow everything up to the next special character: - let special = self.s[1..] + let end = self + .s .find(&['*', '`', '~', '_', '/', '\\', '<', '[', '\n'][..]) - .map(|i| i + 1) + .map(|special| special.max(1)) // make sure we swallow at least one character .unwrap_or_else(|| self.s.len()); - let item = Item::Text(self.style, &self.s[..special]); - self.s = &self.s[special..]; + + let item = Item::Text(self.style, &self.s[..end]); + self.s = &self.s[end..]; self.start_of_line = false; return Some(item); }