From 5ebdfe17d9d0005fb217e0f5f1730b8424b69e1f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 10 Feb 2025 13:51:50 +0530 Subject: [PATCH] Fix #8301 Crash is fixed however corruption of cells remains, that's going to be harder to track down. --- kitty/history.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kitty/history.c b/kitty/history.c index 99e2c7d41..3d0ec36d9 100644 --- a/kitty/history.c +++ b/kitty/history.c @@ -24,12 +24,14 @@ add_segment(HistoryBuf *self, index_type num) { const size_t segment_size = cpu_cells_size + gpu_cells_size + SEGMENT_SIZE * sizeof(LineAttrs); char *mem = calloc(num, segment_size); if (!mem) fatal("Out of memory allocating new history buffer segment"); - self->segments[self->num_segments].mem = mem; + char *needs_free = mem; for (HistoryBufSegment *s = self->segments + self->num_segments; s < self->segments + self->num_segments + num; s++, mem += segment_size) { s->cpu_cells = (CPUCell*)mem; s->gpu_cells = (GPUCell*)(((uint8_t*)s->cpu_cells) + cpu_cells_size); s->line_attrs = (LineAttrs*)(((uint8_t*)s->gpu_cells) + gpu_cells_size); + s->mem = NULL; } + self->segments[self->num_segments].mem = needs_free; self->num_segments += num; }