sixel: knock out memory leak when replacing annihilated sprixcells #2104

pull/2122/head
nick black 3 years ago
parent df9663c28a
commit 7ad34fc282
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -239,6 +239,7 @@ int sixel_wipe(sprixel* s, int ycell, int xcell){
s->wipes_outstanding = true; s->wipes_outstanding = true;
} }
change_p2(s->glyph.buf, SIXEL_P2_TRANS); change_p2(s->glyph.buf, SIXEL_P2_TRANS);
assert(NULL == s->n->tam[s->dimx * ycell + xcell].auxvector);
s->n->tam[s->dimx * ycell + xcell].auxvector = auxvec; s->n->tam[s->dimx * ycell + xcell].auxvector = auxvec;
return 0; return 0;
} }
@ -397,9 +398,15 @@ extract_color_table(const uint32_t* data, int linesize, int cols,
if(rgba_trans_p(*rgb, bargs->transcolor)){ if(rgba_trans_p(*rgb, bargs->transcolor)){
if(sy % cdimy == 0 && visx % cdimx == 0){ if(sy % cdimy == 0 && visx % cdimx == 0){
tam[txyidx].state = SPRIXCELL_ANNIHILATED_TRANS; tam[txyidx].state = SPRIXCELL_ANNIHILATED_TRANS;
free(tam[txyidx].auxvector);
tam[txyidx].auxvector = NULL;
} }
}else{ }else{
tam[txyidx].state = SPRIXCELL_ANNIHILATED; tam[txyidx].state = SPRIXCELL_ANNIHILATED;
if(sy % cdimy == 0 && visx % cdimx == 0){
free(tam[txyidx].auxvector);
tam[txyidx].auxvector = NULL;
}
} }
} }
unsigned char comps[RGBSIZE]; unsigned char comps[RGBSIZE];

Loading…
Cancel
Save