aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2010-09-08 00:39:46 +0800
committerMilan Crha <mcrha@redhat.com>2010-09-08 00:39:46 +0800
commit101305e1c7dc24f5a40e80a900b0777b2634722f (patch)
treecc4fbb384d94d045c192c2b338e8f76db5b9c312
parentba5bb60860c0e0eff92cd7d2c4ae098fa107c331 (diff)
downloadgsoc2013-evolution-101305e1c7dc24f5a40e80a900b0777b2634722f.tar
gsoc2013-evolution-101305e1c7dc24f5a40e80a900b0777b2634722f.tar.gz
gsoc2013-evolution-101305e1c7dc24f5a40e80a900b0777b2634722f.tar.bz2
gsoc2013-evolution-101305e1c7dc24f5a40e80a900b0777b2634722f.tar.lz
gsoc2013-evolution-101305e1c7dc24f5a40e80a900b0777b2634722f.tar.xz
gsoc2013-evolution-101305e1c7dc24f5a40e80a900b0777b2634722f.tar.zst
gsoc2013-evolution-101305e1c7dc24f5a40e80a900b0777b2634722f.zip
Various memory leaks
-rw-r--r--composer/e-composer-private.c25
-rw-r--r--e-util/e-plugin-ui.c12
-rw-r--r--e-util/e-plugin.c5
-rw-r--r--em-format/em-format.c3
-rw-r--r--libgnomecanvas/gnome-canvas.c2
-rw-r--r--mail/em-format-html.c4
-rw-r--r--plugins/mail-notification/mail-notification.c1
-rw-r--r--shell/e-shell-content.c5
-rw-r--r--shell/e-shell-searchbar.c5
-rw-r--r--shell/e-shell.c2
-rw-r--r--widgets/misc/e-menu-tool-button.c7
-rw-r--r--widgets/text/e-text.c3
12 files changed, 47 insertions, 27 deletions
diff --git a/composer/e-composer-private.c b/composer/e-composer-private.c
index ed9e19096f..d4dcb46126 100644
--- a/composer/e-composer-private.c
+++ b/composer/e-composer-private.c
@@ -405,17 +405,22 @@ e_composer_private_constructed (EMsgComposer *composer)
void
e_composer_private_dispose (EMsgComposer *composer)
{
- GConfBridge *bridge;
- GArray *array;
- guint binding_id;
-
- bridge = gconf_bridge_get ();
- array = composer->priv->gconf_bridge_binding_ids;
+ if (composer->priv->gconf_bridge_binding_ids) {
+ GConfBridge *bridge;
+ GArray *array;
+ guint binding_id;
+
+ bridge = gconf_bridge_get ();
+ array = composer->priv->gconf_bridge_binding_ids;
+
+ while (array->len > 0) {
+ binding_id = g_array_index (array, guint, 0);
+ gconf_bridge_unbind (bridge, binding_id);
+ g_array_remove_index_fast (array, 0);
+ }
- while (array->len > 0) {
- binding_id = g_array_index (array, guint, 0);
- gconf_bridge_unbind (bridge, binding_id);
- g_array_remove_index_fast (array, 0);
+ g_array_free (composer->priv->gconf_bridge_binding_ids, TRUE);
+ composer->priv->gconf_bridge_binding_ids = NULL;
}
if (composer->priv->shell != NULL) {
diff --git a/e-util/e-plugin-ui.c b/e-util/e-plugin-ui.c
index a03c6193ef..c79220be63 100644
--- a/e-util/e-plugin-ui.c
+++ b/e-util/e-plugin-ui.c
@@ -544,7 +544,7 @@ e_plugin_ui_register_manager (GtkUIManager *ui_manager,
EPlugin *plugin = plugin_list->data;
GSList *iter;
- plugin_list = g_slist_next (plugin_list);
+ plugin_list = g_slist_remove (plugin_list, plugin);
/* Look for hooks of type EPluginUIHook. */
for (iter = plugin->hooks; iter != NULL; iter = iter->next) {
@@ -565,6 +565,8 @@ e_plugin_ui_register_manager (GtkUIManager *ui_manager,
plugin_ui_hook_register_manager (
hook, ui_manager, id, user_data);
}
+
+ g_object_unref (plugin);
}
}
@@ -583,7 +585,7 @@ e_plugin_ui_enable_manager (GtkUIManager *ui_manager,
EPlugin *plugin = plugin_list->data;
GSList *iter;
- plugin_list = g_slist_next (plugin_list);
+ plugin_list = g_slist_remove (plugin_list, plugin);
/* Look for hooks of type EPluginUIHook. */
for (iter = plugin->hooks; iter != NULL; iter = iter->next) {
@@ -594,6 +596,8 @@ e_plugin_ui_enable_manager (GtkUIManager *ui_manager,
plugin_ui_enable_manager (hook, ui_manager, id);
}
+
+ g_object_unref (plugin);
}
}
@@ -612,7 +616,7 @@ e_plugin_ui_disable_manager (GtkUIManager *ui_manager,
EPlugin *plugin = plugin_list->data;
GSList *iter;
- plugin_list = g_slist_next (plugin_list);
+ plugin_list = g_slist_remove (plugin_list, plugin);
/* Look for hooks of type EPluginUIHook. */
for (iter = plugin->hooks; iter != NULL; iter = iter->next) {
@@ -623,5 +627,7 @@ e_plugin_ui_disable_manager (GtkUIManager *ui_manager,
plugin_ui_disable_manager (hook, ui_manager, id, TRUE);
}
+
+ g_object_unref (plugin);
}
}
diff --git a/e-util/e-plugin.c b/e-util/e-plugin.c
index 0da1151d21..db717e8dcd 100644
--- a/e-util/e-plugin.c
+++ b/e-util/e-plugin.c
@@ -83,9 +83,6 @@ struct _plugin_doc {
gchar *filename;
xmlDocPtr doc;
-
- GSList *plugin_hooks; /* EPlugin objects with pending hooks */
- GSList *plugins; /* xmlNodePtr's of plugins with unknown type (mono,etc) */
};
enum {
@@ -359,7 +356,6 @@ ep_load_plugin (xmlNodePtr root, struct _plugin_doc *pdoc)
pd(printf("Delaying loading of plugin '%s' unknown type '%s'\n", id, prop));
g_free (id);
xmlFree (prop);
- pdoc->plugins = g_slist_prepend (pdoc->plugins, root);
return NULL;
}
xmlFree (prop);
@@ -430,7 +426,6 @@ ep_load (const gchar *filename, gint load_level)
ep->flags &= ~E_PLUGIN_FLAGS_SYSTEM_PLUGIN;
g_free (is_system_plugin);
- pdoc->plugin_hooks = g_slist_prepend (pdoc->plugin_hooks, ep);
ep = NULL;
}
}
diff --git a/em-format/em-format.c b/em-format/em-format.c
index 0dd45effaa..119ac646a2 100644
--- a/em-format/em-format.c
+++ b/em-format/em-format.c
@@ -348,9 +348,6 @@ emf_class_init (EMFormatClass *class)
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
-
- class->type_handlers = g_hash_table_new (g_str_hash, g_str_equal);
- emf_builtin_init (class);
}
static void
diff --git a/libgnomecanvas/gnome-canvas.c b/libgnomecanvas/gnome-canvas.c
index c335b9faa6..7188c77bcd 100644
--- a/libgnomecanvas/gnome-canvas.c
+++ b/libgnomecanvas/gnome-canvas.c
@@ -3226,8 +3226,6 @@ paint (GnomeCanvas *canvas)
visible_rect.x1 = visible_rect.x0 + allocation.width;
visible_rect.y1 = visible_rect.y0 + allocation.height;
- region = gdk_region_new ();
-
for (i = 0; i < n_rects; i++) {
ArtIRect clipped;
diff --git a/mail/em-format-html.c b/mail/em-format-html.c
index fb0bc0a567..8962de2c36 100644
--- a/mail/em-format-html.c
+++ b/mail/em-format-html.c
@@ -604,13 +604,13 @@ efh_finalize (GObject *object)
{
EMFormatHTML *efh = EM_FORMAT_HTML (object);
- /* FIXME: check for leaked stuff */
-
em_format_html_clear_pobject (efh);
efh_gtkhtml_destroy (GTK_HTML (efh->priv->web_view), efh);
g_hash_table_destroy (efh->priv->text_inline_parts);
+ g_mutex_free (efh->priv->lock);
+
/* Chain up to parent's finalize() method. */
G_OBJECT_CLASS (parent_class)->finalize (object);
}
diff --git a/plugins/mail-notification/mail-notification.c b/plugins/mail-notification/mail-notification.c
index 5015e9c874..a75a522077 100644
--- a/plugins/mail-notification/mail-notification.c
+++ b/plugins/mail-notification/mail-notification.c
@@ -159,6 +159,7 @@ send_dbus_message (const gchar *name,
#undef add_named_param
g_dbus_message_set_body (message, g_variant_builder_end (builder));
+ g_variant_builder_unref (builder);
/* Sends the message */
g_dbus_connection_send_message (
diff --git a/shell/e-shell-content.c b/shell/e-shell-content.c
index 5173ee8c83..527ef250a6 100644
--- a/shell/e-shell-content.c
+++ b/shell/e-shell-content.c
@@ -142,6 +142,11 @@ shell_content_dispose (GObject *object)
priv->shell_view = NULL;
}
+ if (priv->user_filename) {
+ g_free (priv->user_filename);
+ priv->user_filename = NULL;
+ }
+
/* Chain up to parent's dispose() method. */
G_OBJECT_CLASS (e_shell_content_parent_class)->dispose (object);
}
diff --git a/shell/e-shell-searchbar.c b/shell/e-shell-searchbar.c
index cb525f8f85..9a7800fdab 100644
--- a/shell/e-shell-searchbar.c
+++ b/shell/e-shell-searchbar.c
@@ -648,6 +648,11 @@ shell_searchbar_dispose (GObject *object)
priv->search_option = NULL;
}
+ if (priv->state_group) {
+ g_free (priv->state_group);
+ priv->state_group = NULL;
+ }
+
/* Chain up to parent's dispose() method. */
G_OBJECT_CLASS (e_shell_searchbar_parent_class)->dispose (object);
}
diff --git a/shell/e-shell.c b/shell/e-shell.c
index db9efc9331..93832ec7fe 100644
--- a/shell/e-shell.c
+++ b/shell/e-shell.c
@@ -329,7 +329,7 @@ shell_ready_for_quit (EShell *shell,
shell_ready_for_quit, shell);
/* Finalize the activity. */
- g_object_ref (activity);
+ g_object_unref (activity);
/* Destroy all watched windows. Note, we iterate over a -copy-
* of the watched windows list because the act of destroying a
diff --git a/widgets/misc/e-menu-tool-button.c b/widgets/misc/e-menu-tool-button.c
index 7ca38bc1e9..612ed801f2 100644
--- a/widgets/misc/e-menu-tool-button.c
+++ b/widgets/misc/e-menu-tool-button.c
@@ -47,6 +47,7 @@ static GtkMenuItem *
menu_tool_button_get_first_menu_item (GtkMenuToolButton *menu_tool_button)
{
GtkWidget *menu;
+ GtkMenuItem *item;
GList *children;
menu = gtk_menu_tool_button_get_menu (menu_tool_button);
@@ -57,7 +58,11 @@ menu_tool_button_get_first_menu_item (GtkMenuToolButton *menu_tool_button)
if (children == NULL)
return NULL;
- return GTK_MENU_ITEM (children->data);
+ item = GTK_MENU_ITEM (children->data);
+
+ g_list_free (children);
+
+ return item;
}
static void
diff --git a/widgets/text/e-text.c b/widgets/text/e-text.c
index 0383b00597..bb9b2dda51 100644
--- a/widgets/text/e-text.c
+++ b/widgets/text/e-text.c
@@ -429,6 +429,9 @@ reset_layout (EText *text)
cairo_font_options_destroy (font_options);
pango_layout_context_changed (text->layout);
+ if (text->font_desc) {
+ pango_font_description_free (text->font_desc);
+ }
text->font_desc = pango_font_description_new ();
if (!pango_font_description_get_size_is_absolute (style->font_desc))
pango_font_description_set_size (text->font_desc,