[grisbi-test] [PATCH 6/6] fix memory leaks when use gsb_select_icon_resize_logo_pixbuf ()
pbiava
pierre.biava at nerim.net
Ven 19 Juil 20:24:32 CEST 2013
---
src/gsb_file_load.c | 3 +++
src/gsb_select_icon.c | 9 +++++----
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/gsb_file_load.c b/src/gsb_file_load.c
index 4b0ec21..24c3b84 100644
--- a/src/gsb_file_load.c
+++ b/src/gsb_file_load.c
@@ -937,6 +937,7 @@ void gsb_file_load_general_part ( const gchar **attribute_names,
pixbuf = gdk_pixbuf_new_from_file ( chemin_logo, NULL );
gtk_window_set_default_icon ( pixbuf );
gsb_select_icon_set_logo_pixbuf ( pixbuf );
+ g_object_unref ( G_OBJECT ( pixbuf ) );
g_free ( chemin_logo );
}
}
@@ -979,6 +980,7 @@ void gsb_file_load_general_part ( const gchar **attribute_names,
{
gtk_window_set_default_icon ( pixbuf );
gsb_select_icon_set_logo_pixbuf ( pixbuf );
+ g_object_unref ( G_OBJECT ( pixbuf ) );
}
}
@@ -6771,6 +6773,7 @@ void gsb_file_load_general_part_before_0_6 ( GMarkupParseContext *context,
{
gtk_window_set_default_icon ( pixbuf );
gsb_select_icon_set_logo_pixbuf ( pixbuf );
+ g_object_unref ( G_OBJECT ( pixbuf ) );
}
if ( chemin_logo && strlen (chemin_logo) > 0 )
g_free ( chemin_logo );
diff --git a/src/gsb_select_icon.c b/src/gsb_select_icon.c
index 730eb8b..4b95660 100644
--- a/src/gsb_select_icon.c
+++ b/src/gsb_select_icon.c
@@ -672,7 +672,11 @@ GdkPixbuf *gsb_select_icon_get_default_logo_pixbuf ( void )
if ( gdk_pixbuf_get_width (pixbuf) > LOGO_WIDTH ||
gdk_pixbuf_get_height (pixbuf) > LOGO_HEIGHT )
{
- return gsb_select_icon_resize_logo_pixbuf ( pixbuf );
+ GdkPixbuf *tmp_pixbuf;
+
+ tmp_pixbuf = gsb_select_icon_resize_logo_pixbuf ( pixbuf );
+ g_object_unref ( G_OBJECT ( pixbuf ) );
+ return tmp_pixbuf;
}
else
return pixbuf;
@@ -726,9 +730,6 @@ GdkPixbuf *gsb_select_icon_resize_logo_pixbuf ( GdkPixbuf *pixbuf )
ratio_height ++;
ratio = ( ratio_width > ratio_height ) ? ratio_width : ratio_height;
- tmp = gdk_pixbuf_new ( GDK_COLORSPACE_RGB, TRUE, 8,
- gdk_pixbuf_get_width ( pixbuf )/ratio,
- gdk_pixbuf_get_height ( pixbuf )/ratio );
tmp = gdk_pixbuf_scale_simple ( pixbuf,
gdk_pixbuf_get_width ( pixbuf )/ratio,
gdk_pixbuf_get_height ( pixbuf )/ratio,
--
1.8.1.5
Plus d'informations sur la liste de diffusion test