Track which list (images or saved_images) each image is on so they can be

removed from the correct list when the total image count is reached. Fixes
crash reported by xlabai at tencent dot com.
This commit is contained in:
Nicholas Marriott
2026-04-27 13:09:07 +01:00
parent e1f942f26a
commit b8434182c9
3 changed files with 18 additions and 5 deletions

View File

@@ -35,7 +35,7 @@ image_free(struct image *im)
TAILQ_REMOVE(&all_images, im, all_entry);
all_images_count--;
TAILQ_REMOVE(&s->images, im, entry);
TAILQ_REMOVE(im->list, im, entry);
sixel_free(im->data);
free(im->fallback);
free(im);
@@ -109,7 +109,8 @@ image_store(struct screen *s, struct sixel_image *si)
image_fallback(&im->fallback, im->sx, im->sy);
TAILQ_INSERT_TAIL(&s->images, im, entry);
im->list = &s->images;
TAILQ_INSERT_TAIL(im->list, im, entry);
TAILQ_INSERT_TAIL(&all_images, im, all_entry);
if (++all_images_count == MAX_IMAGE_COUNT)