Do not loop forever if the combining character is too long, GitHub issue

5434 from me at qdrs dot dev.
This commit is contained in:
nicm
2026-07-26 09:02:08 +00:00
committed by tmux update bot
parent 47f210a9d2
commit afb95f3134
2 changed files with 5 additions and 3 deletions

View File

@@ -1,4 +1,4 @@
/* $OpenBSD: screen-write.c,v 1.284 2026/07/20 11:16:33 nicm Exp $ */
/* $OpenBSD: screen-write.c,v 1.285 2026/07/26 09:02:08 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -2783,7 +2783,7 @@ screen_write_combine(struct screen_write_ctx *ctx, const struct grid_cell *gc)
/* Check if this combined character would be too long. */
if (last.data.size + ud->size > sizeof last.data.data)
return (0);
return (zero_width);
/* Combining; flush any pending output. */
screen_write_collect_flush(ctx, 0, __func__);

View File

@@ -1,4 +1,4 @@
/* $OpenBSD: tty-draw.c,v 1.14 2026/06/19 10:38:29 nicm Exp $ */
/* $OpenBSD: tty-draw.c,v 1.15 2026/07/26 09:02:08 nicm Exp $ */
/*
* Copyright (c) 2026 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -100,6 +100,8 @@ tty_draw_line_get_empty(const struct grid_cell *gc,
empty = nx;
else if (gc->flags & GRID_FLAG_PADDING)
empty = 1;
else if (gc->data.width == 0)
empty = 1;
else if (gc->flags & GRID_FLAG_SELECTED)
empty = 0;
else if (gc->bg == last->bg && gc->attr == 0 && gc->link == 0) {