[Goodies-commits] r2811 - in xfce4-places-plugin/trunk: . panel-plugin
Diego Ongaro
ongardie at xfce.org
Mon Jun 4 09:15:04 CEST 2007
Author: ongardie
Date: 2007-06-04 07:15:04 +0000 (Mon, 04 Jun 2007)
New Revision: 2811
Modified:
xfce4-places-plugin/trunk/ChangeLog
xfce4-places-plugin/trunk/panel-plugin/model.c
xfce4-places-plugin/trunk/panel-plugin/model.h
xfce4-places-plugin/trunk/panel-plugin/model_system.c
xfce4-places-plugin/trunk/panel-plugin/model_user.c
xfce4-places-plugin/trunk/panel-plugin/model_volumes.c
Log:
2007-06-04 Diego Ongaro <ongardie at gmail.com>
* Fix BookmarkInfo-related memory leaks
Modified: xfce4-places-plugin/trunk/ChangeLog
===================================================================
--- xfce4-places-plugin/trunk/ChangeLog 2007-06-04 06:39:03 UTC (rev 2810)
+++ xfce4-places-plugin/trunk/ChangeLog 2007-06-04 07:15:04 UTC (rev 2811)
@@ -1,3 +1,7 @@
+2007-06-04 Diego Ongaro <ongardie at gmail.com>
+
+ * Fix BookmarkInfo-related memory leaks
+
2007-06-03 Diego Ongaro <ongardie at gmail.com>
* Use exo_str_is_equal (adds direct exo dependency)
Modified: xfce4-places-plugin/trunk/panel-plugin/model.c
===================================================================
--- xfce4-places-plugin/trunk/panel-plugin/model.c 2007-06-04 06:39:03 UTC (rev 2810)
+++ xfce4-places-plugin/trunk/panel-plugin/model.c 2007-06-04 07:15:04 UTC (rev 2811)
@@ -118,4 +118,27 @@
g_free(b);
}
+void
+places_bookmark_info_free(BookmarkInfo *bi)
+{
+ if(bi->label != NULL){
+ g_free(bi->label);
+ bi->label = NULL;
+ }
+ if(bi->uri != NULL){
+ g_free(bi->uri);
+ bi->uri = NULL;
+ }
+ if(bi->icon != NULL){
+ g_free(bi->icon);
+ bi->icon = NULL;
+ }
+ if(bi->data != NULL){
+ DBG("WARNING: data != NULL. Caller is in charge of freeing data");
+ bi->data = NULL;
+ }
+
+ g_free(bi);
+}
+
// vim: ai et tabstop=4
Modified: xfce4-places-plugin/trunk/panel-plugin/model.h
===================================================================
--- xfce4-places-plugin/trunk/panel-plugin/model.h 2007-06-04 06:39:03 UTC (rev 2810)
+++ xfce4-places-plugin/trunk/panel-plugin/model.h 2007-06-04 07:15:04 UTC (rev 2811)
@@ -22,15 +22,21 @@
#include <glib.h>
+// Bookmark Info
+
typedef struct
{
gchar *label;
gchar *uri;
gchar *icon;
gboolean show;
- gpointer *data;
+ gpointer data;
} BookmarkInfo;
+void
+places_bookmark_info_free(BookmarkInfo*);
+
+
typedef struct
{
gpointer pass_thru;
Modified: xfce4-places-plugin/trunk/panel-plugin/model_system.c
===================================================================
--- xfce4-places-plugin/trunk/panel-plugin/model_system.c 2007-06-04 06:39:03 UTC (rev 2810)
+++ xfce4-places-plugin/trunk/panel-plugin/model_system.c 2007-06-04 07:15:04 UTC (rev 2811)
@@ -141,13 +141,24 @@
}
}
+static void
+places_bookmarks_system_clear_bi_data(BookmarkInfo *bi)
+{
+ bi->data = NULL;
+}
+
void
places_bookmarks_system_finalize(BookmarksSystem *b)
{
+ g_ptr_array_foreach(b->bookmarks, (GFunc) places_bookmarks_system_clear_bi_data, NULL);
+ g_ptr_array_foreach(b->bookmarks, (GFunc) places_bookmark_info_free, NULL);
g_ptr_array_free(b->bookmarks, TRUE);
+ b->bookmarks = NULL;
+
thunar_vfs_path_unref(b->trash_path);
+ thunar_vfs_shutdown();
+
g_free(b);
- thunar_vfs_shutdown();
}
/*
Modified: xfce4-places-plugin/trunk/panel-plugin/model_user.c
===================================================================
--- xfce4-places-plugin/trunk/panel-plugin/model_user.c 2007-06-04 06:39:03 UTC (rev 2810)
+++ xfce4-places-plugin/trunk/panel-plugin/model_user.c 2007-06-04 07:15:04 UTC (rev 2811)
@@ -143,6 +143,7 @@
time_t mtime = places_bookmarks_user_get_mtime(b);
if(mtime > b->loaded){
+ g_ptr_array_foreach(b->bookmarks, (GFunc) places_bookmark_info_free, NULL);
g_ptr_array_free(b->bookmarks, TRUE);
b->bookmarks = g_ptr_array_new();
b->loaded = mtime;
@@ -182,6 +183,7 @@
void
places_bookmarks_user_finalize(BookmarksUser *b)
{
+ g_ptr_array_foreach(b->bookmarks, (GFunc) places_bookmark_info_free, NULL);
g_ptr_array_free(b->bookmarks, TRUE);
b->bookmarks = NULL;
Modified: xfce4-places-plugin/trunk/panel-plugin/model_volumes.c
===================================================================
--- xfce4-places-plugin/trunk/panel-plugin/model_volumes.c 2007-06-04 06:39:03 UTC (rev 2810)
+++ xfce4-places-plugin/trunk/panel-plugin/model_volumes.c 2007-06-04 07:15:04 UTC (rev 2811)
@@ -84,9 +84,9 @@
DBG("dropping volume from array");
bi = g_ptr_array_remove_index(b->bookmarks, k);
- g_object_unref(bi->data);
+ g_object_unref(bi->data); // unref the volume
bi->data = NULL;
- g_free(bi);
+ places_bookmark_info_free(bi);
b->changed = TRUE;
}
@@ -128,11 +128,11 @@
bi = g_ptr_array_remove_index(b->bookmarks, k);
DBG("Removing bookmark %s", bi->label);
- if(bi->data != NULL){
+ if(bi->data != NULL){ // unref the volume
g_object_unref(bi->data);
bi->data = NULL;
}
- g_free(bi);
+ places_bookmark_info_free(bi);
b->changed = TRUE;
break;
@@ -223,17 +223,18 @@
for(k = 0; k < b->bookmarks->len; k++){
bi = g_ptr_array_remove_index(b->bookmarks, k);
- if(bi->data != NULL){
+ if(bi->data != NULL){ // unref the volume
g_object_unref(bi->data);
bi->data = NULL;
}
- g_free(bi);
+ places_bookmark_info_free(bi);
}
g_object_unref(b->volume_manager);
b->volume_manager = NULL;
thunar_vfs_shutdown();
-
+
+ g_ptr_array_foreach(b->bookmarks, (GFunc) places_bookmark_info_free, NULL);
g_ptr_array_free(b->bookmarks, TRUE);
b->bookmarks = NULL;
More information about the Goodies-commits
mailing list