From c2ab0404b7d8e2266934385798b0447145d0357b Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 9 Apr 2022 22:43:40 +0200 Subject: [PATCH] Fix crash in text layout (#1468) Fix text layout bug added in https://github.com/emilk/egui/pull/1291 --- epaint/src/text/text_layout.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/epaint/src/text/text_layout.rs b/epaint/src/text/text_layout.rs index a03978cd..eacc0958 100644 --- a/epaint/src/text/text_layout.rs +++ b/epaint/src/text/text_layout.rs @@ -249,7 +249,7 @@ fn line_break( } if row_start_idx < paragraph.glyphs.len() { - if non_empty_rows == job.wrap.max_rows { + if job.wrap.max_rows > 0 && non_empty_rows == job.wrap.max_rows { if let Some(last_row) = out_rows.last_mut() { replace_last_glyph_with_overflow_character(fonts, job, last_row); } @@ -773,3 +773,14 @@ fn is_chinese(c: char) -> bool { || ('\u{3400}' <= c && c <= '\u{4DBF}') || ('\u{2B740}' <= c && c <= '\u{2B81F}') } + +// ---------------------------------------------------------------------------- + +#[test] +fn test_zero_max_width() { + let mut fonts = FontsImpl::new(1.0, 1024, super::FontDefinitions::default()); + let mut layout_job = LayoutJob::single_section("W".into(), super::TextFormat::default()); + layout_job.wrap.max_width = 0.0; + let galley = super::layout(&mut fonts, layout_job.into()); + assert_eq!(galley.rows.len(), 1); +}