From 5f8a8951c77abec86f81b783a955d49cc9679faf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Wed, 7 Apr 2021 19:08:29 +0200 Subject: [PATCH] sixel: unhook: tighten up the condition needed for us to free image data pre-maturely --- sixel.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sixel.c b/sixel.c index f4d917f4..0e8c58d5 100644 --- a/sixel.c +++ b/sixel.c @@ -727,11 +727,6 @@ sixel_unhook(struct terminal *term) term->sixel.image.height = term->sixel.max_non_empty_row_no + 1; } - if (term->sixel.image.height == 0 || term->sixel.image.width == 0) { - /* We won’t be emitting any sixels - free backing image */ - free(term->sixel.image.data); - } - int pixel_row_idx = 0; int pixel_rows_left = term->sixel.image.height; const int stride = term->sixel.image.width * sizeof(uint32_t); @@ -766,6 +761,11 @@ sixel_unhook(struct terminal *term) int start_row = do_scroll ? term->grid->cursor.point.row : 0; const int start_col = do_scroll ? term->grid->cursor.point.col : 0; + if (pixel_rows_left == 0 || rows_avail == 0) { + /* We won’t be emitting any sixels - free backing image */ + free(term->sixel.image.data); + } + /* We do not allow sixels to cross the scrollback wrap-around, as * this makes intersection calculations much more complicated */ while (pixel_rows_left > 0 && rows_avail > 0) {