diff --git a/image-sixel.c b/image-sixel.c index 1c93d7a7..5c800461 100644 --- a/image-sixel.c +++ b/image-sixel.c @@ -455,12 +455,12 @@ sixel_scale(struct sixel_image *si, u_int xpixel, u_int ypixel, u_int ox, new->p2 = si->p2; new->set_ra = si->set_ra; - /* clamp to slice end */ - new->ra_x = si->ra_x < psx ? si->ra_x : psx; - new->ra_y = si->ra_y < psy ? si->ra_y : psy; - /* subtract slice origin */ + /* subtract offset */ new->ra_x = new->ra_x > pox ? new->ra_x - pox : 0; new->ra_y = new->ra_y > poy ? new->ra_y - poy : 0; + /* clamp to size */ + new->ra_x = si->ra_x < psx ? si->ra_x : psx; + new->ra_y = si->ra_y < psy ? si->ra_y : psy; /* resize */ new->ra_x = new->ra_x * xpixel / si->xpixel; new->ra_y = new->ra_y * ypixel / si->ypixel; diff --git a/image.c b/image.c index 43808785..6e2b1701 100644 --- a/image.c +++ b/image.c @@ -25,6 +25,7 @@ static struct images all_images = TAILQ_HEAD_INITIALIZER(all_images); static u_int all_images_count; +#define MAX_IMAGE_COUNT 20 static void image_free(struct image *im) @@ -111,7 +112,7 @@ image_store(struct screen *s, struct sixel_image *si) TAILQ_INSERT_TAIL(&s->images, im, entry); TAILQ_INSERT_TAIL(&all_images, im, all_entry); - if (++all_images_count == 10/*XXX*/) + if (++all_images_count == MAX_IMAGE_COUNT) image_free(TAILQ_FIRST(&all_images)); return (im); diff --git a/regress/combine-test.result b/regress/combine-test.result index a08539fb..0d2afb5e 100644 --- a/regress/combine-test.result +++ b/regress/combine-test.result @@ -4,7 +4,7 @@ Λ̊1 🏻2 👍🏻3 -👍🏻 👍🏻4 +👍🏻 👍🏻4 🤷‍♂️5 ♂️7 🤷‍♂️8