From 55914bad9f9a17186c28ce9133d870221bef69ed Mon Sep 17 00:00:00 2001 From: SuperNovaa41 Date: Thu, 16 Jan 2025 09:16:41 -0500 Subject: [PATCH] updates the free function --- src/include/term.h | 4 ++-- src/term.c | 21 +++++++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/include/term.h b/src/include/term.h index 507853d..4f67ee3 100644 --- a/src/include/term.h +++ b/src/include/term.h @@ -105,12 +105,12 @@ int screen_buffer_append(const char* in, size_t len); void screen_buffer_free(screen_buffer_t* buf); /** - * # free_editor_row + * # free_editor_rows * * Frees all of the strings in each row * and the row array */ -void free_editor_row(void); +void free_editor_rows(void); void editor_render_row(row_t* row); diff --git a/src/term.c b/src/term.c index 9de2228..fec3049 100644 --- a/src/term.c +++ b/src/term.c @@ -156,19 +156,36 @@ void screen_buffer_free(screen_buffer_t *buf) free(buf->text); } -void free_editor_row(void) +void free_row(row_t* row) +{ + if (row->line != NULL) + free(row->line); + if (row->render != NULL) + free(row->render); +} + +void free_editor_rows(void) { size_t i; for (i = 0; i < editor.num_rows; i++) - free(editor.rows[i].line); + free_row(&editor.rows[i]); free(editor.rows); } void editor_render_row(row_t* row) { + size_t i, idx; + if (row->render != NULL) // if the row is malloc'd we want to delete it free(row->render); row->render = malloc(sizeof(char) * row->len); + + idx = 0; + for (i = 0; i < row->len; i++) + row->render[idx++] = row->line[i]; + + row->render[idx] = '\0'; + row->r_len = idx; } // small helper function to initialize a row