summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Toso <me@victortoso.com>2016-09-29 18:45:42 +0200
committerMatthias Clasen <mclasen@redhat.com>2016-09-30 14:20:01 -0400
commit9701b58c4efb6375843a7bb67c8a3cdfac1d3f2a (patch)
treeb8d8366c335e40faa1e8ae99ff086ffeba588516
parent6c7d78f07d54b9691a35a9406b9978bb23665a83 (diff)
downloadgtk+-9701b58c4efb6375843a7bb67c8a3cdfac1d3f2a.tar.gz
icon-theme: Fix leaks on error
13 bytes in 1 blocks are definitely lost in loss record 766 of 16,875 at 0x4C2DB9D: malloc (vg_replace_malloc.c:299) by 0xA9D0247: vasprintf (in /usr/lib64/libc-2.24.so) by 0xA2453FC: g_vasprintf (gprintf.c:316) by 0xA2152F7: g_strdup_vprintf (gstrfuncs.c:514) by 0xA21539C: g_strdup_printf (gstrfuncs.c:540) by 0x678F25C: gdk_rgba_to_string (gdkrgba.c:360) by 0x5FAE00D: rgba_to_string_noalpha (gtkicontheme.c:4322) by 0x5FAE6F2: gtk_icon_info_load_symbolic_svg (gtkicontheme.c:4492) by 0x5FAED4F: gtk_icon_info_load_symbolic_internal (gtkicontheme.c:4622) by 0x5FAEEE8: gtk_icon_info_load_symbolic (gtkicontheme.c:4711) by 0x5F00246: gtk_css_image_recolor_load (gtkcssimagerecolor.c:118) by 0x5F003E4: gtk_css_image_recolor_compute (gtkcssimagerecolor.c:170) 14 bytes in 1 blocks are definitely lost in loss record 801 of 16,875 at 0x4C2DB9D: malloc (vg_replace_malloc.c:299) by 0xA9D0247: vasprintf (in /usr/lib64/libc-2.24.so) by 0xA2453FC: g_vasprintf (gprintf.c:316) by 0xA2152F7: g_strdup_vprintf (gstrfuncs.c:514) by 0xA21539C: g_strdup_printf (gstrfuncs.c:540) by 0x678F25C: gdk_rgba_to_string (gdkrgba.c:360) by 0x5FAE00D: rgba_to_string_noalpha (gtkicontheme.c:4322) by 0x5FAE68E: gtk_icon_info_load_symbolic_svg (gtkicontheme.c:4482) by 0x5FAED4F: gtk_icon_info_load_symbolic_internal (gtkicontheme.c:4622) by 0x5FAEEE8: gtk_icon_info_load_symbolic (gtkicontheme.c:4711) by 0x5F00246: gtk_css_image_recolor_load (gtkcssimagerecolor.c:118) by 0x5F003E4: gtk_css_image_recolor_compute (gtkcssimagerecolor.c:170) 15 bytes in 1 blocks are definitely lost in loss record 838 of 16,875 at 0x4C2DB9D: malloc (vg_replace_malloc.c:299) by 0xA9D0247: vasprintf (in /usr/lib64/libc-2.24.so) by 0xA2453FC: g_vasprintf (gprintf.c:316) by 0xA2152F7: g_strdup_vprintf (gstrfuncs.c:514) by 0xA21539C: g_strdup_printf (gstrfuncs.c:540) by 0x678F25C: gdk_rgba_to_string (gdkrgba.c:360) by 0x5FAE00D: rgba_to_string_noalpha (gtkicontheme.c:4322) by 0x5FAE6C3: gtk_icon_info_load_symbolic_svg (gtkicontheme.c:4487) by 0x5FAED4F: gtk_icon_info_load_symbolic_internal (gtkicontheme.c:4622) by 0x5FAEEE8: gtk_icon_info_load_symbolic (gtkicontheme.c:4711) by 0x5F00246: gtk_css_image_recolor_load (gtkcssimagerecolor.c:118) by 0x5F003E4: gtk_css_image_recolor_compute (gtkcssimagerecolor.c:170) 16,384 bytes in 1 blocks are definitely lost in loss record 16,847 of 16,875 at 0x4C2DADE: malloc (vg_replace_malloc.c:298) by 0x4C2FC91: realloc (vg_replace_malloc.c:785) by 0xA1F89FA: g_realloc (gmem.c:159) by 0xA1BAD2E: g_array_maybe_expand (garray.c:779) by 0xA1BA566: g_array_set_size (garray.c:555) by 0xA1BBCB8: g_byte_array_set_size (garray.c:1752) by 0x8D1CC48: g_file_load_contents (gfile.c:6766) by 0x5FAE767: gtk_icon_info_load_symbolic_svg (gtkicontheme.c:4501) by 0x5FAED4F: gtk_icon_info_load_symbolic_internal (gtkicontheme.c:4622) by 0x5FAEEE8: gtk_icon_info_load_symbolic (gtkicontheme.c:4711) by 0x5F00246: gtk_css_image_recolor_load (gtkcssimagerecolor.c:118) by 0x5F003E4: gtk_css_image_recolor_compute (gtkcssimagerecolor.c:170) https://bugzilla.gnome.org/show_bug.cgi?id=772215
-rw-r--r--gtk/gtkicontheme.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/gtk/gtkicontheme.c b/gtk/gtkicontheme.c
index 63b6f238a7..5a416b76d0 100644
--- a/gtk/gtkicontheme.c
+++ b/gtk/gtkicontheme.c
@@ -4505,6 +4505,11 @@ gtk_icon_info_load_symbolic_svg (GtkIconInfo *icon_info,
{
g_propagate_error (error, icon_info->load_error);
icon_info->load_error = NULL;
+ g_free (css_fg);
+ g_free (css_warning);
+ g_free (css_error);
+ g_free (css_success);
+ g_free (file_data);
return NULL;
}
@@ -4517,7 +4522,14 @@ gtk_icon_info_load_symbolic_svg (GtkIconInfo *icon_info,
g_object_unref (stream);
if (!pixbuf)
- return NULL;
+ {
+ g_free (css_fg);
+ g_free (css_warning);
+ g_free (css_error);
+ g_free (css_success);
+ g_free (file_data);
+ return NULL;
+ }
icon_info->symbolic_width = gdk_pixbuf_get_width (pixbuf);
icon_info->symbolic_height = gdk_pixbuf_get_height (pixbuf);