summaryrefslogtreecommitdiff
path: root/gdk-pixbuf
diff options
context:
space:
mode:
authorAlex Henrie <alexhenrie24@gmail.com>2019-11-26 17:04:58 -0700
committerEmmanuele Bassi <ebassi@gmail.com>2020-01-07 14:03:32 +0000
commit017330de95a54eb2e1cd87428c3099208f7e0262 (patch)
tree1624c42d3580b4975f3e2a3e1567db174b7f2992 /gdk-pixbuf
parent7a3b8612300282d33d4c11bbec4c7aea411a4490 (diff)
downloadgdk-pixbuf-017330de95a54eb2e1cd87428c3099208f7e0262.tar.gz
pixops: Fix memory leaks in error paths
Also remove redundant null checks before g_free, and use g_free instead of g_clear_pointer because we never read the pointer value again.
Diffstat (limited to 'gdk-pixbuf')
-rw-r--r--gdk-pixbuf/pixops/pixops.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/gdk-pixbuf/pixops/pixops.c b/gdk-pixbuf/pixops/pixops.c
index f1b75f820..a1c3c9bfd 100644
--- a/gdk-pixbuf/pixops/pixops.c
+++ b/gdk-pixbuf/pixops/pixops.c
@@ -1838,7 +1838,7 @@ _pixops_composite_color_real (guchar *dest_buf,
filter.overall_alpha = overall_alpha / 255.;
if (!make_weights (&filter, interp_type, scale_x, scale_y))
- return;
+ goto free_tmp;
line_func = composite_line_color;
@@ -1850,8 +1850,8 @@ _pixops_composite_color_real (guchar *dest_buf,
g_free (filter.x.weights);
g_free (filter.y.weights);
- if (tmp_buf)
- g_free (tmp_buf);
+free_tmp:
+ g_free (tmp_buf);
}
void
@@ -1991,7 +1991,7 @@ _pixops_composite_real (guchar *dest_buf,
filter.overall_alpha = overall_alpha / 255.;
if (!make_weights (&filter, interp_type, scale_x, scale_y))
- return;
+ goto free_tmp;
if (filter.x.n == 2 && filter.y.n == 2 && dest_channels == 4 &&
src_channels == 4 && src_has_alpha && !dest_has_alpha)
@@ -2007,8 +2007,8 @@ _pixops_composite_real (guchar *dest_buf,
g_free (filter.x.weights);
g_free (filter.y.weights);
- if (tmp_buf)
- g_free (tmp_buf);
+free_tmp:
+ g_free (tmp_buf);
}
void
@@ -2396,7 +2396,7 @@ _pixops_scale_real (guchar *dest_buf,
filter.overall_alpha = 1.0;
if (!make_weights (&filter, interp_type, scale_x, scale_y))
- return;
+ goto free_tmp;
if (filter.x.n == 2 && filter.y.n == 2 && dest_channels == 3 && src_channels == 3)
line_func = scale_line_22_33;
@@ -2411,7 +2411,8 @@ _pixops_scale_real (guchar *dest_buf,
g_free (filter.x.weights);
g_free (filter.y.weights);
- g_clear_pointer (&tmp_buf, g_free);
+free_tmp:
+ g_free (tmp_buf);
}
void