summaryrefslogtreecommitdiff
path: root/src/snapshot.c
diff options
context:
space:
mode:
authorBerke Güzel <wenekar1@gmail.com>2026-10-15 12:42:11 +0300
committerBerke Güzel <wenekar1@gmail.com>2026-10-15 12:42:11 +0300
commit6d2dc774947787dcef73a3251d1e9ec51bc526df (patch)
tree05f3c67039a9c6e69854e7de88ef9d40c110ec21 /src/snapshot.c
parent7b31d6a05357953c035e2ab05ec117ef748f7798 (diff)
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 <noreply@anthropic.com>
Diffstat (limited to 'src/snapshot.c')
-rw-r--r--src/snapshot.c3
1 files changed, 2 insertions, 1 deletions
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);