id: f67e6008-5161-4880-b3e7-b685736a69c1 title: build panics on multibyte release summary state: closed labels:
- kind:build assignees: [] milestone: null created: 2026-10-27T18:08:32.854172841Z updated: 2026-10-27T18:20:51.769025776Z
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.