}
printf("\n");*/
}
- if(data)
- free(data);
+ if(data) {
+ free(data); data=0;
+ }
}
if(!zimagedata || uncompress(imagedata, &imagedatalen, zimagedata, zimagedatalen) != Z_OK) {
}
}
free(old);
+ free(imagedata);
} else if(header.mode == 6 || header.mode == 2) {
int i,s=0;
int x,y;
} else {
old = &data2[(y-1)*header.width*4];
}
- if(header.mode == 6)
+ if(header.mode == 6) {
applyfilter4(mode, src, old, dest, header.width);
- else // header.mode = 2
+ } else { // header.mode = 2
applyfilter3(mode, src, old, dest, header.width);
+ /* replace alpha color */
+ if(hasalphacolor) {
+ int x;
+ for(x=0;x<header.width;x++) {
+ if(dest[x*4+1] == alphacolor[0] &&
+ dest[x*4+2] == alphacolor[1] &&
+ dest[x*4+3] == alphacolor[2]) {
+ *(U32*)&dest[x*4] = 0;
+ }
+ }
+ }
+ }
}
+ free(imagedata);
} else if(header.mode == 0 || header.mode == 3) {
COL*rgba = 0;
U8*tmpline = (U8*)malloc(header.width+1);
free(tmpline);
free(destline);
free(rgba);
+ free(imagedata);
} else {
printf("expected PNG mode to be 2, 3 or 6 (is:%d)\n", header.mode);
return 0;