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;

-- 


Reply via email to