kwo pushed a commit to branch master. http://git.enlightenment.org/legacy/imlib2.git/commit/?id=09d9a950544b31f3d5422b8ad498371e204b0563
commit 09d9a950544b31f3d5422b8ad498371e204b0563 Author: Kim Woelders <k...@woelders.dk> Date: Sun Sep 29 09:44:02 2019 +0200 Remove pointless im->data checks in loaders im->data should always be NULL when entering the load() function. We can therefore also remove free(im->data) calls before the buffer is allocated. --- src/modules/loaders/loader_argb.c | 2 +- src/modules/loaders/loader_bmp.c | 2 +- src/modules/loaders/loader_ff.c | 1 - src/modules/loaders/loader_jpeg.c | 2 +- src/modules/loaders/loader_png.c | 120 ++++++++++++++++++-------------------- src/modules/loaders/loader_pnm.c | 2 +- src/modules/loaders/loader_tga.c | 2 +- src/modules/loaders/loader_tiff.c | 2 +- 8 files changed, 63 insertions(+), 70 deletions(-) diff --git a/src/modules/loaders/loader_argb.c b/src/modules/loaders/loader_argb.c index ad5711d..049e5d3 100644 --- a/src/modules/loaders/loader_argb.c +++ b/src/modules/loaders/loader_argb.c @@ -40,7 +40,7 @@ load(ImlibImage * im, ImlibProgressFunction progress, else UNSET_FLAG(im->flags, F_HAS_ALPHA); } - if (((!im->data) && (im->loader)) || (immediate_load) || (progress)) + if (im->loader || immediate_load || progress) { DATA32 *ptr; int y, l, pl = 0; diff --git a/src/modules/loaders/loader_bmp.c b/src/modules/loaders/loader_bmp.c index ccd9170..2cc791e 100644 --- a/src/modules/loaders/loader_bmp.c +++ b/src/modules/loaders/loader_bmp.c @@ -300,7 +300,7 @@ load(ImlibImage * im, ImlibProgressFunction progress, im->h = h; UNSET_FLAG(im->flags, F_HAS_ALPHA); } - if (((!im->data) && (im->loader)) || (immediate_load) || (progress)) + if (im->loader || immediate_load || progress) { fseek(f, offset, SEEK_SET); buffer = malloc(imgsize); diff --git a/src/modules/loaders/loader_ff.c b/src/modules/loaders/loader_ff.c index 305e85d..0b7ba58 100644 --- a/src/modules/loaders/loader_ff.c +++ b/src/modules/loaders/loader_ff.c @@ -47,7 +47,6 @@ load(ImlibImage * im, ImlibProgressFunction progress, h = im->h; rowlen = w * (sizeof("RGBA") - 1); - free(im->data); if (!(im->data = malloc(rowlen * h)) || !(row = malloc(rowlen * sizeof(uint16_t)))) { diff --git a/src/modules/loaders/loader_jpeg.c b/src/modules/loaders/loader_jpeg.c index b9481a8..7a07394 100644 --- a/src/modules/loaders/loader_jpeg.c +++ b/src/modules/loaders/loader_jpeg.c @@ -76,7 +76,7 @@ load(ImlibImage * im, ImlibProgressFunction progress, UNSET_FLAG(im->flags, F_HAS_ALPHA); } - if (((!im->data) && (im->loader)) || (immediate_load) || (progress)) + if (im->loader || immediate_load || progress) { DATA8 *ptr, *line[16], *data; DATA32 *ptr2; diff --git a/src/modules/loaders/loader_png.c b/src/modules/loaders/loader_png.c index 449f8c5..865bb14 100644 --- a/src/modules/loaders/loader_png.c +++ b/src/modules/loaders/loader_png.c @@ -23,6 +23,7 @@ load(ImlibImage * im, ImlibProgressFunction progress, png_structp png_ptr = NULL; png_infop info_ptr = NULL; int bit_depth, color_type, interlace_type; + unsigned char buf[PNG_BYTES_TO_CHECK]; f = fopen(im->real_file, "rb"); if (!f) @@ -30,71 +31,66 @@ load(ImlibImage * im, ImlibProgressFunction progress, /* read header */ hasa = 0; - if (!im->data) - { - unsigned char buf[PNG_BYTES_TO_CHECK]; - /* if we haven't read the header before, set the header data */ - if (fread(buf, 1, PNG_BYTES_TO_CHECK, f) != PNG_BYTES_TO_CHECK) - { - fclose(f); - return 0; - } - if (png_sig_cmp(buf, 0, PNG_BYTES_TO_CHECK)) - { - fclose(f); - return 0; - } - rewind(f); - png_ptr = - png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png_ptr) - { - fclose(f); - return 0; - } - info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) - { - png_destroy_read_struct(&png_ptr, NULL, NULL); - fclose(f); - return 0; - } - if (setjmp(png_jmpbuf(png_ptr))) - { - im->w = 0; - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - fclose(f); - return 0; - } - png_init_io(png_ptr, f); - png_read_info(png_ptr, info_ptr); - png_get_IHDR(png_ptr, info_ptr, (png_uint_32 *) (&w32), - (png_uint_32 *) (&h32), &bit_depth, &color_type, - &interlace_type, NULL, NULL); - if (!IMAGE_DIMENSIONS_OK(w32, h32)) - { - im->w = 0; - png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL); - fclose(f); - return 0; - } - im->w = (int)w32; - im->h = (int)h32; - if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) - hasa = 1; - if (color_type == PNG_COLOR_TYPE_RGB_ALPHA) - hasa = 1; - if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - hasa = 1; - if (hasa) - SET_FLAG(im->flags, F_HAS_ALPHA); - else - UNSET_FLAG(im->flags, F_HAS_ALPHA); + if (fread(buf, 1, PNG_BYTES_TO_CHECK, f) != PNG_BYTES_TO_CHECK) + { + fclose(f); + return 0; + } + if (png_sig_cmp(buf, 0, PNG_BYTES_TO_CHECK)) + { + fclose(f); + return 0; + } + rewind(f); + png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (!png_ptr) + { + fclose(f); + return 0; + } + info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) + { + png_destroy_read_struct(&png_ptr, NULL, NULL); + fclose(f); + return 0; + } + if (setjmp(png_jmpbuf(png_ptr))) + { + im->w = 0; + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); + fclose(f); + return 0; } + png_init_io(png_ptr, f); + png_read_info(png_ptr, info_ptr); + png_get_IHDR(png_ptr, info_ptr, (png_uint_32 *) (&w32), + (png_uint_32 *) (&h32), &bit_depth, &color_type, + &interlace_type, NULL, NULL); + if (!IMAGE_DIMENSIONS_OK(w32, h32)) + { + im->w = 0; + png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL); + fclose(f); + return 0; + } + im->w = (int)w32; + im->h = (int)h32; + if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) + hasa = 1; + if (color_type == PNG_COLOR_TYPE_RGB_ALPHA) + hasa = 1; + if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + hasa = 1; + if (hasa) + SET_FLAG(im->flags, F_HAS_ALPHA); + else + UNSET_FLAG(im->flags, F_HAS_ALPHA); + /* if its the second phase load OR its immediate load or a progress */ /* callback is set then load the data */ - if ((im->loader) || (immediate_load) || (progress)) + if (im->loader || immediate_load || progress) { unsigned char **lines; int i; @@ -138,8 +134,6 @@ load(ImlibImage * im, ImlibProgressFunction progress, png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER); #endif - if (im->data) - free(im->data); im->data = malloc(w * h * sizeof(DATA32)); if (!im->data) { diff --git a/src/modules/loaders/loader_pnm.c b/src/modules/loaders/loader_pnm.c index fabe895..38d9fa9 100644 --- a/src/modules/loaders/loader_pnm.c +++ b/src/modules/loaders/loader_pnm.c @@ -128,7 +128,7 @@ load(ImlibImage * im, ImlibProgressFunction progress, rc = 1; /* Ok */ - if (((!im->data) && (im->loader)) || (immediate_load) || (progress)) + if (im->loader || immediate_load || progress) { DATA8 *data = NULL; /* for the binary versions */ DATA8 *ptr = NULL; diff --git a/src/modules/loaders/loader_tga.c b/src/modules/loaders/loader_tga.c index 56795fe..d3a72f9 100644 --- a/src/modules/loaders/loader_tga.c +++ b/src/modules/loaders/loader_tga.c @@ -302,7 +302,7 @@ load(ImlibImage * im, ImlibProgressFunction progress, UNSET_FLAG(im->flags, F_HAS_ALPHA); /* if we need to actually read the pixel data... */ - if (((!im->data) && (im->loader)) || (immediate_load) || (progress)) + if (im->loader || immediate_load || progress) { unsigned long datasize; unsigned char *bufptr, *bufend; diff --git a/src/modules/loaders/loader_tiff.c b/src/modules/loaders/loader_tiff.c index 9539954..b7a2a05 100644 --- a/src/modules/loaders/loader_tiff.c +++ b/src/modules/loaders/loader_tiff.c @@ -336,7 +336,7 @@ load(ImlibImage * im, ImlibProgressFunction progress, else UNSET_FLAG(im->flags, F_HAS_ALPHA); - if ((im->loader) || (immediate_load) || (progress)) + if (im->loader || immediate_load || progress) { rgba_image.progress = progress; rgba_image.pper = rgba_image.py = 0; --