diff --git a/src/lib/notcurses.c b/src/lib/notcurses.c index 55e022747..e8a540978 100644 --- a/src/lib/notcurses.c +++ b/src/lib/notcurses.c @@ -269,14 +269,7 @@ void free_plane(ncplane* p){ if(p->sprite){ sprixel_hide(p->sprite); } - if(p->tam){ - for(int y = 0 ; y < p->leny ; ++y){ - for(int x = 0 ; x < p->lenx ; ++x){ - free(p->tam[y * p->lenx + x].auxvector); - } - } - free(p->tam); - } + free(p->tam); egcpool_dump(&p->pool); free(p->name); free(p->fb); diff --git a/src/lib/render.c b/src/lib/render.c index a3402d7d6..303f44129 100644 --- a/src/lib/render.c +++ b/src/lib/render.c @@ -144,9 +144,11 @@ highcontrast(uint32_t bchannel){ // at least for this rendering cycle static void paint_sprixel(ncplane* p, struct crender* rvec, int starty, int startx, - int dimy, int dimx, int offy, int offx, int dstleny, int dstlenx){ + int offy, int offx, int dstleny, int dstlenx){ const notcurses* nc = ncplane_notcurses_const(p); sprixel* s = p->sprite; + int dimy = s->dimy; + int dimx = s->dimx; for(int y = starty ; y < dimy ; ++y){ const int absy = y + offy; // once we've passed the physical screen's bottom, we're done @@ -229,8 +231,7 @@ paint(ncplane* p, struct crender* rvec, int dstleny, int dstlenx, // glyph, but we *do* need to null out any cellregions that we've // scribbled upon. if(p->sprite){ - paint_sprixel(p, rvec, starty, startx, dimy, dimx, offy, offx, - dstleny, dstlenx); + paint_sprixel(p, rvec, starty, startx, offy, offx, dstleny, dstlenx); // decouple from the pile's sixel list if(p->sprite->next){ p->sprite->next->prev = p->sprite->prev; diff --git a/src/lib/sprite.c b/src/lib/sprite.c index febc02d79..1a841490f 100644 --- a/src/lib/sprite.c +++ b/src/lib/sprite.c @@ -85,6 +85,12 @@ void sprixel_hide(sprixel* s){ s->movedfromy = ncplane_abs_y(s->n); s->movedfromx = ncplane_abs_x(s->n); if(s->n){ + for(int y = 0 ; y < s->dimy ; ++y){ + for(int x = 0 ; x < s->dimx ; ++x){ + free(s->n->tam[y * s->dimx + x].auxvector); + s->n->tam[y * s->dimx + x].auxvector = NULL; + } + } s->n->sprite = NULL; s->n = NULL; }