summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKim Woelders <kim@woelders.dk>2021-04-11 20:12:13 +0200
committerKim Woelders <kim@woelders.dk>2021-04-16 17:15:06 +0200
commite82a5997ecf595ceb1ede964337733beb47cb94c (patch)
tree8e322c603bcc81d5f9c43165e89d789e7d1e099a
parent6f4dc94cc45c937c902a4cf3619febdb8bac16cd (diff)
downloadimlib2-e82a5997ecf595ceb1ede964337733beb47cb94c.tar.gz
Fix clang-analyzer warnings - lib (mostly trivial)
-rw-r--r--src/lib/api.c1
-rw-r--r--src/lib/blend.c4
-rw-r--r--src/lib/file.c3
-rw-r--r--src/lib/font_draw.c1
-rw-r--r--src/lib/font_main.c14
-rw-r--r--src/lib/grad.c26
-rw-r--r--src/lib/rgbadraw.c86
-rw-r--r--src/lib/rotate.c2
-rw-r--r--src/lib/scale.c10
-rw-r--r--src/lib/script.c17
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++)
{