diff options
| author | Lukas Fürmetz <fuermetz@mailbox.org> | 2018-11-12 23:59:18 +0100 |
|---|---|---|
| committer | Lukas Fürmetz <fuermetz@mailbox.org> | 2018-11-12 23:59:18 +0100 |
| commit | 141935df5fbd2e4c1dbeaf2bca0d69ab55af5b74 (patch) | |
| tree | 4e47f252961f74b8df6d759cf1c96dc085bb3869 | |
| parent | 8b7e9e7e611e08706063957d77918eca7c16d102 (diff) | |
Free sb_buffer, when the terminal is finalized
| -rw-r--r-- | vterm-module.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/vterm-module.c b/vterm-module.c index 984a613..24ac1e6 100644 --- a/vterm-module.c +++ b/vterm-module.c @@ -46,11 +46,11 @@ static int term_sb_push(int cols, const VTermScreenCell *cells, void *data) { term->sb_current++; } - if (term->sb_pending < (int)term->sb_size) { + if (term->sb_pending < term->sb_size) { term->sb_pending++; } - memcpy(sbrow->cells, cells, sizeof(cells[0]) * c); + memcpy(sbrow->cells, cells, c * sizeof(cells[0])); return 1; } @@ -538,6 +538,10 @@ static void term_put_caret(Term *term, emacs_env *env, int row, int col, static void term_finalize(void *object) { Term *term = (Term *)object; + for (int i = 0; i < term->sb_current; i++) { + free(term->sb_buffer[i]); + } + free(term->sb_buffer); vterm_free(term->vt); free(term); } |
