From e94f1085727c0450563a05154c6485fb7d32ec8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sat, 6 Mar 2021 21:18:11 +0100 Subject: [PATCH] sixel: resize: always round up height to a multiple of 6 Sixels are always a multiple of six. --- sixel.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/sixel.c b/sixel.c index d89e7a87..7cc9f63c 100644 --- a/sixel.c +++ b/sixel.c @@ -848,10 +848,8 @@ resize(struct terminal *term, int new_width, int new_height) const int old_width = term->sixel.image.width; const int old_height = term->sixel.image.height; - int alloc_new_width = new_width; - int alloc_new_height = (new_height + 6 - 1) / 6 * 6; - xassert(alloc_new_height >= new_height); - xassert(alloc_new_height - new_height < 6); + new_height = (new_height + 6 - 1) / 6 * 6; + xassert(new_height % 6 == 0); uint32_t *new_data = NULL; @@ -859,7 +857,7 @@ resize(struct terminal *term, int new_width, int new_height) /* Width (and thus stride) is the same, so we can simply * re-alloc the existing buffer */ - new_data = realloc(old_data, alloc_new_width * alloc_new_height * sizeof(uint32_t)); + new_data = realloc(old_data, new_width * new_height * sizeof(uint32_t)); if (new_data == NULL) { LOG_ERRNO("failed to reallocate sixel image buffer"); return false; @@ -870,7 +868,7 @@ resize(struct terminal *term, int new_width, int new_height) } else { /* Width (and thus stride) change - need to allocate a new buffer */ xassert(new_width > old_width); - new_data = xmalloc(alloc_new_width * alloc_new_height * sizeof(uint32_t)); + new_data = xmalloc(new_width * new_height * sizeof(uint32_t)); /* Copy old rows, and initialize new columns to background color */ for (int r = 0; r < min(old_height, new_height); r++) {