Mercurial > hg > forks > libbpg
changeset 3:ffcd1967fb5c
Clean up load_image() probing code a bit in preparation for TIFF support.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 07 Dec 2016 10:35:38 +0200 |
parents | bb21eb1cd483 |
children | bbd61622856a |
files | bpgenc.c |
diffstat | 1 files changed, 14 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/bpgenc.c Wed Dec 07 10:17:53 2016 +0200 +++ b/bpgenc.c Wed Dec 07 10:35:38 2016 +0200 @@ -1425,31 +1425,26 @@ int limited_range, int premultiplied_alpha) { FILE *f; - int is_png; - Image *img; + Image *img = NULL; BPGMetaData *md; + uint8_t buf[PROBE_BUF_SIZE]; *pmd = NULL; - f = fopen(infilename, "rb"); - if (!f) + if ((f = fopen(infilename, "rb")) == NULL) return NULL; - { - uint8_t buf[8]; - if (fread(buf, 1, 8, f) == 8 && - png_sig_cmp(buf, 0, 8) == 0) - is_png = 1; - else - is_png = 0; - fseek(f, 0, SEEK_SET); - } - - if (is_png) { - img = read_png(&md, f, color_space, bit_depth, limited_range, - premultiplied_alpha); - } else { + + if (fread(buf, 1, PROBE_BUF_SIZE, f) != PROBE_BUF_SIZE) + goto err; + + fseek(f, 0, SEEK_SET); + + if (png_sig_cmp(buf, 0, PROBE_BUF_SIZE) == 0) + img = read_png(&md, f, color_space, bit_depth, limited_range, premultiplied_alpha); + else img = read_jpeg(&md, f, bit_depth); - } + +err: fclose(f); *pmd = md; return img;