sixel: fix row height calculation in resize_vertically()

In resize_vertically(), we assumed a sixel is 6 pixels tall. This is
mostly true, but not for non-1:1 sixels. Or, to be more precise, not
for sixels where 'pan' != 1.

This caused us to allocate too little backing memory, resulting in a
crash when we later tried to write to the image.
This commit is contained in:
Daniel Eklöf 2024-03-04 16:29:04 +01:00
parent 702d3ae6ca
commit 8ff8ec5b70
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 4 additions and 1 deletions

View file

@ -1347,8 +1347,9 @@ resize_vertically(struct terminal *term, int new_height)
uint32_t *old_data = term->sixel.image.data;
const int width = term->sixel.image.width;
const int old_height = term->sixel.image.height;
const int sixel_row_height = 6 * term->sixel.pan;
int alloc_height = (new_height + 6 - 1) / 6 * 6;
int alloc_height = (new_height + sixel_row_height - 1) / sixel_row_height * sixel_row_height;
xassert(new_height > 0);