Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
- **Solution**: Added `PreloadAllTextures()` function that loads all textures at startup, ensuring consistent Pixmap values before any rendering occurs.
- **Files modified**: `term/term_view.cc`, `term/term_view.hh`

- **Terminal Crash: Prevent X11 BadMatch Errors from Oversized Pages (2026-01-24)**
- Fixed SIGABRT crashes when server sends page sizes larger than terminal window dimensions
- **Root Cause**: Server could send TERM_BLANKPAGE commands with page dimensions exceeding the terminal's allocated pixmap size, causing X11 drawing operations to fail with BadMatch errors
- **Solution**: Added page size clipping in Layer::BlankPage() to ensure page dimensions never exceed the layer's actual width and height
- **Files modified**: `term/layer.cc`
- **Impact**: Prevents terminal crashes when connecting to servers with larger display configurations, ensuring stable operation across different screen sizes

### Added
- **Payment Processing: Complete Debit Card Fee Support (2026-01-15)**
- Added comprehensive debit card fee tender types with full tax handling support
Expand Down
3 changes: 3 additions & 0 deletions term/layer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,9 @@ int Layer::BlankPage(int mode, int texture, int tc, int size, int split,
frame_width = 4;
break;
}
// Clip page size to layer size to prevent X11 errors
page_w = Min(page_w, static_cast<int>(w));
page_h = Min(page_h, static_cast<int>(h));
page_x = Max(w - page_w, 0) / 2 + offset_x;
page_y = Max(h - page_h, 0) / 2 + offset_y;
use_clip = 0;
Expand Down