X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fpng.c;fp=lib%2Fpng.c;h=d71c19bc05c542be31b00f65f72450f4f079e3d8;hp=c548aa2e8e2e098b185f56086d09d19a701d0d95;hb=08aec55c59be9ddc638a655266edb5155ec42b73;hpb=45c7a306220b3d406b3fdee49e7be468cccfed5d diff --git a/lib/png.c b/lib/png.c index c548aa2..d71c19b 100644 --- a/lib/png.c +++ b/lib/png.c @@ -1342,8 +1342,15 @@ EXPORT void savePNG(const char*filename, unsigned char*data, int width, int heig long idatsize = 0; { int x,y; - int srcwidth = width * (bpp/8); - int linelen = 1 + ((srcwidth+3)&~3); + int bypp = bpp/8; + int srcwidth = width * bypp; + int linelen = 1 + srcwidth; + if(bypp==2) + linelen = 1 + ((srcwidth+1)&~1); + else if(bypp==3) + linelen = 1 + ((srcwidth+2)/3)*3; + else if(bypp==4) + linelen = 1 + ((srcwidth+3)&~3); unsigned char* line = (unsigned char*)malloc(linelen); unsigned char* bestline = (unsigned char*)malloc(linelen); memset(line, 0, linelen);