kwo pushed a commit to branch master.

http://git.enlightenment.org/legacy/imlib2.git/commit/?id=e82a5997ecf595ceb1ede964337733beb47cb94c

commit e82a5997ecf595ceb1ede964337733beb47cb94c
Author: Kim Woelders <k...@woelders.dk>
Date:   Sun Apr 11 20:12:13 2021 +0200

    Fix clang-analyzer warnings - lib (mostly trivial)
---
 src/lib/api.c       |  1 +
 src/lib/blend.c     |  4 ---
 src/lib/file.c      |  3 +-
 src/lib/font_draw.c |  1 +
 src/lib/font_main.c | 14 ++++-----
 src/lib/grad.c      | 26 +++++++++++++---
 src/lib/rgbadraw.c  | 86 +++++++++++++++++++++++++++--------------------------
 src/lib/rotate.c    |  2 +-
 src/lib/scale.c     | 10 +++----
 src/lib/script.c    | 17 +++++------
 10 files changed, 89 insertions(+), 75 deletions(-)

diff --git a/src/lib/api.c b/src/lib/api.c
index 40e1658..3f65bba 100644
--- a/src/lib/api.c
+++ b/src/lib/api.c
@@ -3673,6 +3673,7 @@ imlib_text_get_location_at_index(const char *text, int 
index,
 
    __imlib_font_query_char_coords(fn, text, index, &cx, &cy, &cw, &ch);
 
+   w = h = 0;
    imlib_get_text_size(text, &w, &h);
 
    switch (ctx->direction)
diff --git a/src/lib/blend.c b/src/lib/blend.c
index 7566de2..76b6d04 100644
--- a/src/lib/blend.c
+++ b/src/lib/blend.c
@@ -1894,10 +1894,6 @@ __imlib_BlendImageToImage(ImlibImage * im_src, 
ImlibImage * im_dst,
              if ((dw < 1) || (dh < 1))
                 return;
           }
-        if (psx != dx)
-           sx += ((dx - psx) * ssw) / abs(ddw);
-        if (psy != dy)
-           sy += ((dy - psy) * ssh) / abs(ddh);
         if (psw != dw)
            sw = (sw * dw) / psw;
         if (psh != dh)
diff --git a/src/lib/file.c b/src/lib/file.c
index 7dcd219..4f7c43a 100644
--- a/src/lib/file.c
+++ b/src/lib/file.c
@@ -210,7 +210,8 @@ __imlib_FileDir(const char *dir, int *num)
         return NULL;
      }
    /* count # of entries in dir (worst case) */
-   for (dirlen = 0; (dp = readdir(dirp)); dirlen++);
+   for (dirlen = 0; readdir(dirp) != NULL; dirlen++)
+      ;
    if (!dirlen)
      {
         closedir(dirp);
diff --git a/src/lib/font_draw.c b/src/lib/font_draw.c
index ea49e14..9756f9c 100644
--- a/src/lib/font_draw.c
+++ b/src/lib/font_draw.c
@@ -97,6 +97,7 @@ __imlib_render_str(ImlibImage * im, ImlibFont * fn, int drx, 
int dry,
 
    ascent = __imlib_font_max_ascent_get(fn);
 
+   nx = ny = 0;
    __imlib_font_draw(im2, pixel, fn, 0, ascent, text, &nx, &ny, 0, 0, w, h);
 
    /* OK, now we have small ImlibImage with text rendered, 
diff --git a/src/lib/font_main.c b/src/lib/font_main.c
index ad47167..e3b6eb5 100644
--- a/src/lib/font_main.c
+++ b/src/lib/font_main.c
@@ -360,18 +360,16 @@ __imlib_hash_free(Imlib_Hash * hash)
 
    if (!hash)
       return;
+
    size = __imlib_hash_size(hash);
    for (i = 0; i < size; i++)
      {
-        while (hash->buckets[i])
-          {
-             Imlib_Hash_El      *el;
+        Imlib_Hash_El      *el, *el_next;
 
-             el = (Imlib_Hash_El *) hash->buckets[i];
-             if (el->key)
-                free(el->key);
-             hash->buckets[i] =
-                __imlib_object_list_remove(hash->buckets[i], el);
+        for (el = (Imlib_Hash_El *) hash->buckets[i]; el; el = el_next)
+          {
+             el_next = (Imlib_Hash_El *) el->_list_data.next;
+             free(el->key);
              free(el);
           }
      }
diff --git a/src/lib/grad.c b/src/lib/grad.c
index 5686a9e..b3df3a3 100644
--- a/src/lib/grad.c
+++ b/src/lib/grad.c
@@ -94,7 +94,7 @@ __imlib_MapRange(ImlibRange * rg, int len)
    for (p = rg->color; p; p = p->next)
       ll += p->distance;
    map = malloc(len * sizeof(DATA32));
-   pmap = malloc(ll * sizeof(DATA32));
+   pmap = calloc(ll, sizeof(DATA32));
    i = 0;
    for (p = rg->color; p; p = p->next)
      {
@@ -166,7 +166,7 @@ __imlib_MapHsvaRange(ImlibRange * rg, int len)
    for (p = rg->color; p; p = p->next)
       ll += p->distance;
    map = malloc(len * sizeof(DATA32));
-   pmap = malloc(ll * sizeof(DATA32));
+   pmap = calloc(ll, sizeof(DATA32));
    i = 0;
    for (p = rg->color; p; p = p->next)
      {
@@ -286,15 +286,23 @@ __imlib_DrawGradient(ImlibImage * im, int x, int y, int 
w, int h,
         yoff += (y - py);
      }
 
+   vlut = NULL;
+   map = NULL;
+
    hlut = malloc(sizeof(int) * ww);
+   if (!hlut)
+      goto quit;
    vlut = malloc(sizeof(int) * hh);
+   if (!vlut)
+      goto quit;
+
    if (ww > hh)
       len = ww * 16;
    else
       len = hh * 16;
    map = __imlib_MapRange(rg, len);
    if (!map)
-      return;
+      goto quit;
 
    xx = (int)(32 * sin(((angle + 180) * 2 * 3.141592654) / 360));
    yy = -(int)(32 * cos(((angle + 180) * 2 * 3.141592654) / 360));
@@ -423,6 +431,7 @@ __imlib_DrawGradient(ImlibImage * im, int x, int y, int w, 
int h,
         break;
      }
 
+ quit:
    free(vlut);
    free(hlut);
    free(map);
@@ -479,15 +488,23 @@ __imlib_DrawHsvaGradient(ImlibImage * im, int x, int y, 
int w, int h,
         yoff += (y - py);
      }
 
+   vlut = NULL;
+   map = NULL;
+
    hlut = malloc(sizeof(int) * ww);
+   if (!hlut)
+      goto quit;
    vlut = malloc(sizeof(int) * hh);
+   if (!vlut)
+      goto quit;
+
    if (ww > hh)
       len = ww * 16;
    else
       len = hh * 16;
    map = __imlib_MapHsvaRange(rg, len);
    if (!map)
-      return;
+      goto quit;
 
    xx = (int)(32 * sin(((angle + 180) * 2 * 3.141592654) / 360));
    yy = -(int)(32 * cos(((angle + 180) * 2 * 3.141592654) / 360));
@@ -616,6 +633,7 @@ __imlib_DrawHsvaGradient(ImlibImage * im, int x, int y, int 
w, int h,
         break;
      }
 
+ quit:
    free(vlut);
    free(hlut);
    free(map);
diff --git a/src/lib/rgbadraw.c b/src/lib/rgbadraw.c
index 7a4e932..670ebcd 100644
--- a/src/lib/rgbadraw.c
+++ b/src/lib/rgbadraw.c
@@ -94,7 +94,6 @@ __imlib_FlipImageDiagonal(ImlibImage * im, int direction)
    int                 x, y, w, hw, tmp;
 
    data = malloc(im->w * im->h * sizeof(DATA32));
-   from = im->data;
    w = im->h;
    im->h = im->w;
    im->w = w;
@@ -143,6 +142,7 @@ __imlib_FlipImageDiagonal(ImlibImage * im, int direction)
         hw = hw - 1;
         break;
      }
+
    from = im->data;
    for (x = im->w; --x >= 0;)
      {
@@ -253,53 +253,55 @@ __imlib_SharpenImage(ImlibImage * im, int rad)
    DATA32             *data, *p1, *p2;
    int                 a, r, g, b, x, y;
 
-   data = malloc(im->w * im->h * sizeof(DATA32));
    if (rad == 0)
       return;
-   else
+
+   data = malloc(im->w * im->h * sizeof(DATA32));
+   if (!data)
+      return;
+
+   for (y = 1; y < (im->h - 1); y++)
      {
-        for (y = 1; y < (im->h - 1); y++)
+        p1 = im->data + 1 + (y * im->w);
+        p2 = data + 1 + (y * im->w);
+        for (x = 1; x < (im->w - 1); x++)
           {
-             p1 = im->data + 1 + (y * im->w);
-             p2 = data + 1 + (y * im->w);
-             for (x = 1; x < (im->w - 1); x++)
-               {
-                  b = (int)((p1[0]) & 0xff) * 5;
-                  g = (int)((p1[0] >> 8) & 0xff) * 5;
-                  r = (int)((p1[0] >> 16) & 0xff) * 5;
-                  a = (int)((p1[0] >> 24) & 0xff) * 5;
-                  b -= (int)((p1[-1]) & 0xff);
-                  g -= (int)((p1[-1] >> 8) & 0xff);
-                  r -= (int)((p1[-1] >> 16) & 0xff);
-                  a -= (int)((p1[-1] >> 24) & 0xff);
-                  b -= (int)((p1[1]) & 0xff);
-                  g -= (int)((p1[1] >> 8) & 0xff);
-                  r -= (int)((p1[1] >> 16) & 0xff);
-                  a -= (int)((p1[1] >> 24) & 0xff);
-                  b -= (int)((p1[-im->w]) & 0xff);
-                  g -= (int)((p1[-im->w] >> 8) & 0xff);
-                  r -= (int)((p1[-im->w] >> 16) & 0xff);
-                  a -= (int)((p1[-im->w] >> 24) & 0xff);
-                  b -= (int)((p1[im->w]) & 0xff);
-                  g -= (int)((p1[im->w] >> 8) & 0xff);
-                  r -= (int)((p1[im->w] >> 16) & 0xff);
-                  a -= (int)((p1[im->w] >> 24) & 0xff);
-
-                  a = (a & ((~a) >> 16));
-                  a = ((a | ((a & 256) - ((a & 256) >> 8))));
-                  r = (r & ((~r) >> 16));
-                  r = ((r | ((r & 256) - ((r & 256) >> 8))));
-                  g = (g & ((~g) >> 16));
-                  g = ((g | ((g & 256) - ((g & 256) >> 8))));
-                  b = (b & ((~b) >> 16));
-                  b = ((b | ((b & 256) - ((b & 256) >> 8))));
-
-                  *p2 = PIXEL_ARGB(a, r, g, b);
-                  p2++;
-                  p1++;
-               }
+             b = (int)((p1[0]) & 0xff) * 5;
+             g = (int)((p1[0] >> 8) & 0xff) * 5;
+             r = (int)((p1[0] >> 16) & 0xff) * 5;
+             a = (int)((p1[0] >> 24) & 0xff) * 5;
+             b -= (int)((p1[-1]) & 0xff);
+             g -= (int)((p1[-1] >> 8) & 0xff);
+             r -= (int)((p1[-1] >> 16) & 0xff);
+             a -= (int)((p1[-1] >> 24) & 0xff);
+             b -= (int)((p1[1]) & 0xff);
+             g -= (int)((p1[1] >> 8) & 0xff);
+             r -= (int)((p1[1] >> 16) & 0xff);
+             a -= (int)((p1[1] >> 24) & 0xff);
+             b -= (int)((p1[-im->w]) & 0xff);
+             g -= (int)((p1[-im->w] >> 8) & 0xff);
+             r -= (int)((p1[-im->w] >> 16) & 0xff);
+             a -= (int)((p1[-im->w] >> 24) & 0xff);
+             b -= (int)((p1[im->w]) & 0xff);
+             g -= (int)((p1[im->w] >> 8) & 0xff);
+             r -= (int)((p1[im->w] >> 16) & 0xff);
+             a -= (int)((p1[im->w] >> 24) & 0xff);
+
+             a = (a & ((~a) >> 16));
+             a = ((a | ((a & 256) - ((a & 256) >> 8))));
+             r = (r & ((~r) >> 16));
+             r = ((r | ((r & 256) - ((r & 256) >> 8))));
+             g = (g & ((~g) >> 16));
+             g = ((g | ((g & 256) - ((g & 256) >> 8))));
+             b = (b & ((~b) >> 16));
+             b = ((b | ((b & 256) - ((b & 256) >> 8))));
+
+             *p2 = PIXEL_ARGB(a, r, g, b);
+             p2++;
+             p1++;
           }
      }
+
    __imlib_ReplaceData(im, data);
 }
 
diff --git a/src/lib/rotate.c b/src/lib/rotate.c
index 65ea28b..4b9b7b9 100644
--- a/src/lib/rotate.c
+++ b/src/lib/rotate.c
@@ -45,7 +45,7 @@
 /*\ One colour, alpha between one value and three zeroes \*/
 #define INTERP_A000(dest, v, f1, f2) do {      \
        *(dest) = *(v);                         \
-       A_VAL(dest) = (A_VAL(dest) *            \
+       A_VAL(dest) = (A_VAL(v) *               \
                ((f1) & _ROTATE_PREC_BITS) * ((f2) & _ROTATE_PREC_BITS)) >> (2 
* _ROTATE_PREC); \
        } while (0)
 
diff --git a/src/lib/scale.c b/src/lib/scale.c
index 9c63ffc..a94f13c 100644
--- a/src/lib/scale.c
+++ b/src/lib/scale.c
@@ -54,7 +54,7 @@ __imlib_CalcYPoints(DATA32 * src, int sw, int sh, int dh, int 
b1, int b2)
    if (dh > (b1 + b2))
      {
         val = (b1 << 16);
-        inc = ((sh - b1 - b2) << 16) / (dh - b1 - b2);
+        inc = ((sh - b1 - b2) << 16) / (dh - (b1 + b2));
         for (i = 0; i < (dh - b1 - b2); i++)
           {
              p[j++] = src + ((val >> 16) * sw);
@@ -112,7 +112,7 @@ __imlib_CalcXPoints(int sw, int dw, int b1, int b2)
    if (dw > (b1 + b2))
      {
         val = (b1 << 16);
-        inc = ((sw - b1 - b2) << 16) / (dw - b1 - b2);
+        inc = ((sw - b1 - b2) << 16) / (dw - (b1 + b2));
         for (i = 0; i < (dw - b1 - b2); i++)
           {
              p[j++] = (val >> 16);
@@ -193,8 +193,8 @@ __imlib_CalcApoints(int s, int d, int b1, int b2, int up)
           {
              int                 ss, dd, ap, Cp;
 
-             ss = s - b1 - b2;
-             dd = d - b1 - b2;
+             ss = s - (b1 + b2);
+             dd = d - (b1 + b2);
              val = 0;
              inc = (ss << 16) / dd;
              Cp = ((dd << 14) / ss) + 1;
@@ -868,7 +868,6 @@ __imlib_ScaleAARGBA(ImlibScaleInfo * isi, DATA32 * dest, 
int dxx, int dyy,
                   if (j > 0)
                     {
                        pix = sptr;
-                       sptr += sow;
                        rx = (R_VAL(pix) * xap) >> 9;
                        gx = (G_VAL(pix) * xap) >> 9;
                        bx = (B_VAL(pix) * xap) >> 9;
@@ -1454,7 +1453,6 @@ __imlib_ScaleAARGB(ImlibScaleInfo * isi, DATA32 * dest, 
int dxx, int dyy,
                   if (j > 0)
                     {
                        pix = sptr;
-                       sptr += sow;
                        rx = (R_VAL(pix) * xap) >> 9;
                        gx = (G_VAL(pix) * xap) >> 9;
                        bx = (B_VAL(pix) * xap) >> 9;
diff --git a/src/lib/script.c b/src/lib/script.c
index be34944..9072ff4 100644
--- a/src/lib/script.c
+++ b/src/lib/script.c
@@ -59,15 +59,15 @@ static char        *
 __imlib_copystr(const char *str, int start, int end)
 {
    int                 i = 0;
-   char               *rstr = calloc(1024, sizeof(char));
+   char               *rstr;
 
-   if (start <= end && end < (int)strlen(str))
-     {
-        for (i = start; i <= end; i++)
-           rstr[i - start] = str[i];
-        return rstr;
-     }
-   return NULL;
+   if (start > end || end >= (int)strlen(str))
+      return NULL;
+
+   rstr = calloc(1024, sizeof(char));
+   for (i = start; i <= end; i++)
+      rstr[i - start] = str[i];
+   return rstr;
 }
 
 static void
@@ -267,7 +267,6 @@ __imlib_script_parse(ImlibImage * im, const char *script, 
va_list param_list)
           }
 
         start = 0;
-        i = 0;
         script_len = strlen(scriptbuf);
         for (i = 0; i < script_len; i++)
           {

-- 


Reply via email to