diff --git a/image.c b/image.c index b44538d..19fafaf 100644 --- a/image.c +++ b/image.c @@ -302,12 +302,11 @@ static bool img_load_webp(img_t *img, const fileinfo_t *file) { FILE *webp_file; WebPData data; - Imlib_Image im = NULL; struct WebPAnimDecoderOptions opts; WebPAnimDecoder *dec = NULL; struct WebPAnimInfo info; - unsigned char *buf = NULL; + unsigned char *buf = NULL, *bytes = NULL; int ts; const WebPDemuxer *demux; WebPIterator iter; @@ -315,8 +314,6 @@ static bool img_load_webp(img_t *img, const fileinfo_t *file) unsigned int delay; bool err = false; - data.bytes = NULL; - if ((err = (webp_file = fopen(file->path, "rb")) == NULL)) { error(0, 0, "%s: Error opening webp image", file->name); goto fail; @@ -324,11 +321,12 @@ static bool img_load_webp(img_t *img, const fileinfo_t *file) fseek(webp_file, 0L, SEEK_END); data.size = ftell(webp_file); rewind(webp_file); - data.bytes = emalloc(data.size); - if ((err = fread((unsigned char *)data.bytes, 1, data.size, webp_file) != data.size)) { + bytes = emalloc(data.size); + if ((err = fread(bytes, 1, data.size, webp_file) != data.size)) { error(0, 0, "%s: Error reading webp image", file->name); goto fail; } + data.bytes = bytes; /* Setup the WebP Animation Decoder */ if ((err = !WebPAnimDecoderOptionsInit(&opts))) { @@ -391,7 +389,7 @@ static bool img_load_webp(img_t *img, const fileinfo_t *file) fail: if (dec != NULL) WebPAnimDecoderDelete(dec); - free((unsigned char *)data.bytes); + free(bytes); return !err; } #endif /* HAVE_LIBWEBP */