|
|
|
@ -2845,7 +2845,9 @@ static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) |
|
|
|
|
if (first) return stbi__err("first not IHDR", "Corrupt PNG"); |
|
|
|
|
if (scan != SCAN_load) return 1; |
|
|
|
|
if (z->idata == NULL) return stbi__err("no IDAT","Corrupt PNG"); |
|
|
|
|
z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, 16384, (int *) &raw_len, !is_iphone); |
|
|
|
|
// initial guess for decoded data size to avoid unnecessary reallocs
|
|
|
|
|
raw_len = s->img_x * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; |
|
|
|
|
z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone); |
|
|
|
|
if (z->expanded == NULL) return 0; // zlib should set error
|
|
|
|
|
free(z->idata); z->idata = NULL; |
|
|
|
|
if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans) |
|
|
|
|