чување 479b3c12e47a583c76306d9e5c12b2c88b173474
родитељ fd6f3bf493e955b6089e6c1465c783fb81a6e0e7
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Fri, 18 Feb 2022 21:32:49 +0100
Prevent leak in DrawState.buffer (asan)
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
измењених датотека: 2, додавања: 4(+), брисања: 4(-)
diff --git a/draw.c b/draw.c
@@ -115,7 +115,7 @@ void
free_drawstate(struct DrawState* state)
{
size_t row = 0;
- for (row = 0; row < state->rows_count; row++)
+ for (row = 0; row < state->buffer_size; row++)
free_bufferline(state->buffer + row);
free(state->buffer);
for (row = 0; row < state->paste_rows_count; row++)
diff --git a/sled.c b/sled.c
@@ -151,7 +151,7 @@ reread_file(struct DrawState* state)
size_t row = 0;
int result;
- for (row = 0; row < state->rows_count; row++)
+ for (row = 0; row < state->buffer_size; row++)
free_bufferline(state->buffer + row);
free(state->buffer);
for (row = 0; row < state->paste_rows_count; row++)
@@ -198,12 +198,12 @@ quit_callback(struct DrawState* state, struct tb_event* ev)
int
load_file(struct DrawState* state, long* lineno, long* col)
{
- struct BufferLine* newchunk
- = calloc(ALLOC_DELTA, sizeof(struct BufferLine));
+ struct BufferLine* newchunk = NULL;
struct BufferLine* line = NULL;
FILE* input = NULL;
char input_line[MAXBUFLINE];
+ newchunk = calloc(ALLOC_DELTA, sizeof(struct BufferLine));
if (!newchunk)
return LOAD_ERR_CANT_ALLOC;