stb_image: Guess decoded image size before zlib decode to avoid unnecessary reallocs.
This commit is contained in:
parent
3d6dccf0c4
commit
1996a019ac
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user