diff --git a/grid.c b/grid.c index ee10f38b..d1d625c6 100644 --- a/grid.c +++ b/grid.c @@ -123,11 +123,12 @@ grid_reflow(struct grid *grid, int new_rows, int new_cols, struct sixel six = it->item; six.pos.row = new_row_idx; - /* TODO: ensure sixels don't span across the wrap-around */ - int end __attribute__((unused)) = (six.pos.row + six.rows - 1) & (new_rows - 1); - assert(end >= six.pos.row); - - tll_push_back(new_sixels, six); + int end = (six.pos.row + six.rows - 1) & (new_rows - 1); + if (end < six.pos.row) { + /* TODO: split sixel instead of removing it... */ + sixel_destroy(&it->item); + } else + tll_push_back(new_sixels, six); tll_remove(grid->sixel_images, it); } }