From 6d2dc774947787dcef73a3251d1e9ec51bc526df Mon Sep 17 00:00:00 2001 From: Berke Güzel Date: Thu, 15 Oct 2026 12:42:11 +0300 Subject: Report selection allocation failure instead of truncating On a screen taller than 256 rows the selection's row list is allocated. When that failed, it fell back to the 256-entry stack array, so the selection and the snapshot's selection spans silently stopped at row 256 while every call still reported success. lines_init() now reports the failure. term_select_start() and term_select_extend() return false and leave the selection unchanged, term_snapshot_update() fails and keeps its previous content, and the text getters return NULL, as they do for their other allocations. Co-Authored-By: Claude Opus 5.5 --- src/snapshot.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/snapshot.c') diff --git a/src/snapshot.c b/src/snapshot.c index 8726265..78c66b0 100644 --- a/src/snapshot.c +++ b/src/snapshot.c @@ -318,7 +318,8 @@ static bool term_snapshot_update_inner(struct term_snapshot *s, struct term *t) s->arena_cap = cap; } - term_selection_view_spans(t, c0, c1); + if (!term_selection_view_spans(t, c0, c1)) + goto done; p.all = all; p.scrolled = scrolled; apply(s, t, &p); -- cgit v1.2.3