aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Fürmetz <fuermetz@mailbox.org>2018-11-12 23:59:18 +0100
committerLukas Fürmetz <fuermetz@mailbox.org>2018-11-12 23:59:18 +0100
commit141935df5fbd2e4c1dbeaf2bca0d69ab55af5b74 (patch)
tree4e47f252961f74b8df6d759cf1c96dc085bb3869
parent8b7e9e7e611e08706063957d77918eca7c16d102 (diff)
Free sb_buffer, when the terminal is finalized
-rw-r--r--vterm-module.c8
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);
}