.forge/issues/f67e6008-5161-4880-b3e7-b685736a69c1/issue.md 1.1 KiB 42 lines Raw

id: f67e6008-5161-4880-b3e7-b685736a69c1 title: build panics on multibyte release summary state: closed labels:


What

The release feed truncates a summary by character count, then explicitly truncates the same string by byte count:

src/feed.rs:92-94:

let mut s: String = first_line.chars().take(200).collect();
if s.len() > 200 {
    s.truncate(200);
}

For multibyte characters s.len() can exceed 200 even when there are only 200 chars, and truncate(200) may land inside a UTF-8 code point.

Reproduced

Release body first line = "€" repeated 200 times (3 bytes each). hu13 build exits 101:

thread 'main' panicked at src/feed.rs:94:23:
assertion failed: self.is_char_boundary(new_len)

Impact

Any release note with enough multibyte text crashes the whole build (denial of build / release).

Fix

Remove the redundant byte truncate (the value is already at most 200 chars), or truncate only at a char boundary. Add a regression test with 200 € / emoji.

view raw