diff --git a/CHANGELOG.md b/CHANGELOG.md index 9bd135f1..510d0e9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fix escapes prematurely terminated by terminators in unicode glyphs - Incorrect location when clicking inside an unfocused window on macOS - Startup mode `Maximized` on Windows +- Crash when writing a fullwidth character in the last column with auto-wrap mode disabled ## 0.4.2 diff --git a/alacritty_terminal/src/term/mod.rs b/alacritty_terminal/src/term/mod.rs index 040c7228..d5759421 100644 --- a/alacritty_terminal/src/term/mod.rs +++ b/alacritty_terminal/src/term/mod.rs @@ -1462,10 +1462,16 @@ impl Handler for Term { if width == 1 { self.write_at_cursor(c); } else { - // Insert extra placeholder before wide char if glyph doesn't fit in this row anymore. if self.cursor.point.col + 1 >= num_cols { - self.write_at_cursor(' ').flags.insert(Flags::WIDE_CHAR_SPACER); - self.wrapline(); + if self.mode.contains(TermMode::LINE_WRAP) { + // Insert placeholder before wide char if glyph does not fit in this row. + self.write_at_cursor(' ').flags.insert(Flags::WIDE_CHAR_SPACER); + self.wrapline(); + } else { + // Prevent out of bounds crash when linewrapping is disabled. + self.input_needs_wrap = true; + return; + } } // Write full width glyph to current cursor cell.