From 558b2cfd7fe2c67e31d54becf13978196b29e1c6 Mon Sep 17 00:00:00 2001 From: Jeremiah Russell Date: Sat, 11 Oct 2025 10:02:20 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(utils):=20correct=20string?= =?UTF-8?q?=20elision=20boundary=20calculation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ensure elision respects character boundaries for utf-8 strings - prevent panics when eliding near multi-byte characters --- src/utils.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/utils.rs b/src/utils.rs index ba34822..41ef991 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -46,9 +46,17 @@ impl Elide for String { if self.len() <= to { self } else { - let range = to - 4; + let range = get_start_boundary(self.clone(), to - 4); self.replace_range(range.., " ..."); self } } } + +fn get_start_boundary(string: String, mut start: usize) -> usize { + while !string.is_char_boundary(start) { + start -= 1; + } + + start +}