summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md1
-rw-r--r--alacritty_terminal/src/term/mod.rs12
2 files changed, 10 insertions, 3 deletions
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<T: EventListener> Handler for Term<T> {
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.