aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2012-05-31 16:44:49 +0800
committerMilan Crha <mcrha@redhat.com>2012-05-31 16:44:49 +0800
commit71924fc48776c642fe8520febc384250cf55973c (patch)
tree6b2f1738675f111dfb664805f82ad27add135715
parentc88d3170304e1892b221d0581a3cd3c767de4281 (diff)
downloadgsoc2013-evolution-71924fc48776c642fe8520febc384250cf55973c.tar.gz
gsoc2013-evolution-71924fc48776c642fe8520febc384250cf55973c.tar.zst
gsoc2013-evolution-71924fc48776c642fe8520febc384250cf55973c.zip
Fix memory leaks around gtk_tree_model_get() function
-rw-r--r--calendar/alarm-notify/alarm-notify-dialog.c4
-rw-r--r--mail/e-mail-label-list-store.c1
-rw-r--r--mail/e-mail-sidebar.c2
-rw-r--r--mail/em-folder-tree.c1
-rw-r--r--modules/mail/em-mailer-prefs.c7
-rw-r--r--plugins/attachment-reminder/attachment-reminder.c2
-rw-r--r--plugins/imap-features/imap-headers.c2
-rw-r--r--plugins/templates/templates.c12
-rw-r--r--smime/gui/certificate-manager.c7
-rw-r--r--widgets/e-timezone-dialog/e-timezone-dialog.c12
-rw-r--r--widgets/misc/e-contact-map-window.c1
11 files changed, 44 insertions, 7 deletions
diff --git a/calendar/alarm-notify/alarm-notify-dialog.c b/calendar/alarm-notify/alarm-notify-dialog.c
index fc37d881a8..f4bc1f41c9 100644
--- a/calendar/alarm-notify/alarm-notify-dialog.c
+++ b/calendar/alarm-notify/alarm-notify-dialog.c
@@ -502,6 +502,10 @@ tree_selection_changed_cb (GtkTreeSelection *selection,
gtk_tree_model_get (model, &iter, ALARM_FUNCINFO_COLUMN, &an->cur_funcinfo, -1);
fill_in_labels (an, summary, description, location, occur_start, occur_end);
+
+ g_free (summary);
+ g_free (description);
+ g_free (location);
} else {
gtk_widget_set_sensitive (an->snooze_btn, FALSE);
gtk_widget_set_sensitive (an->edit_btn, FALSE);
diff --git a/mail/e-mail-label-list-store.c b/mail/e-mail-label-list-store.c
index 706aaac5e9..bf642168ff 100644
--- a/mail/e-mail-label-list-store.c
+++ b/mail/e-mail-label-list-store.c
@@ -247,6 +247,7 @@ labels_model_changed_cb (GtkTreeModel *model,
store->priv->mail_settings, "labels",
(const gchar * const *) array->pdata);
+ g_ptr_array_foreach (array, (GFunc) g_free, NULL);
g_ptr_array_free (array, TRUE);
g_signal_handlers_unblock_by_func (
diff --git a/mail/e-mail-sidebar.c b/mail/e-mail-sidebar.c
index ef2133aebe..d4aeeb7026 100644
--- a/mail/e-mail-sidebar.c
+++ b/mail/e-mail-sidebar.c
@@ -171,6 +171,8 @@ mail_sidebar_selection_changed_cb (GtkTreeSelection *selection,
if (CAMEL_IS_STORE (store) && folder_name != NULL)
uri = e_mail_folder_uri_build (store, folder_name);
+
+ g_free (folder_name);
}
if (uri != NULL)
diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c
index d55253e388..45d83d4568 100644
--- a/mail/em-folder-tree.c
+++ b/mail/em-folder-tree.c
@@ -2294,6 +2294,7 @@ tree_drag_data_received (GtkWidget *widget,
gdk_drag_context_get_selected_action (context) == GDK_ACTION_MOVE)) {
gtk_drag_finish (context, FALSE, FALSE, GDK_CURRENT_TIME);
gtk_tree_path_free (dest_path);
+ g_free (full_name);
return;
}
diff --git a/modules/mail/em-mailer-prefs.c b/modules/mail/em-mailer-prefs.c
index d81656f997..cf20b8f777 100644
--- a/modules/mail/em-mailer-prefs.c
+++ b/modules/mail/em-mailer-prefs.c
@@ -364,9 +364,12 @@ emmp_header_add_sensitivity (EMMailerPrefs *prefs)
-1);
if (g_ascii_strcasecmp (header_name, entry_contents) == 0) {
gtk_widget_set_sensitive (GTK_WIDGET (prefs->add_header), FALSE);
+ g_free (header_name);
return;
}
+ g_free (header_name);
+
valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (prefs->header_list_store), &iter);
}
@@ -388,6 +391,8 @@ emmp_save_headers (EMMailerPrefs *prefs)
gboolean enabled;
gchar *xml;
+ h.name = NULL;
+
gtk_tree_model_get (GTK_TREE_MODEL (prefs->header_list_store), &iter,
HEADER_LIST_HEADER_COLUMN, &h.name,
HEADER_LIST_ENABLED_COLUMN, &enabled,
@@ -397,6 +402,8 @@ emmp_save_headers (EMMailerPrefs *prefs)
if ((xml = e_mail_reader_header_to_xml (&h)))
header_list = g_slist_append (header_list, xml);
+ g_free (h.name);
+
valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (prefs->header_list_store), &iter);
}
diff --git a/plugins/attachment-reminder/attachment-reminder.c b/plugins/attachment-reminder/attachment-reminder.c
index 762594517b..5f3494175e 100644
--- a/plugins/attachment-reminder/attachment-reminder.c
+++ b/plugins/attachment-reminder/attachment-reminder.c
@@ -351,6 +351,8 @@ commit_changes (UIData *ui)
/* Check if the keyword is not empty */
if ((keyword) && (g_utf8_strlen (g_strstrip (keyword), -1) > 0))
g_variant_builder_add (&b, "s", keyword);
+ g_free (keyword);
+
valid = gtk_tree_model_iter_next (model, &iter);
}
diff --git a/plugins/imap-features/imap-headers.c b/plugins/imap-features/imap-headers.c
index 3a0917fa53..56f7e4f5b4 100644
--- a/plugins/imap-features/imap-headers.c
+++ b/plugins/imap-features/imap-headers.c
@@ -168,10 +168,12 @@ epif_add_sensitivity (EPImapFeaturesData *ui)
0, &header_name,
-1);
if (g_ascii_strcasecmp (header_name, entry_contents) == 0) {
+ g_free (header_name);
gtk_widget_set_sensitive (GTK_WIDGET (ui->add_header), FALSE);
return;
}
+ g_free (header_name);
valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (ui->store), &iter);
}
diff --git a/plugins/templates/templates.c b/plugins/templates/templates.c
index 75891641e2..4359af01b9 100644
--- a/plugins/templates/templates.c
+++ b/plugins/templates/templates.c
@@ -169,8 +169,10 @@ commit_changes (UIData *ui)
gchar *keyword, *value;
gchar *key;
- gtk_tree_model_get (model, &iter, CLUE_KEYWORD_COLUMN, &keyword, -1);
- gtk_tree_model_get (model, &iter, CLUE_VALUE_COLUMN, &value, -1);
+ gtk_tree_model_get (model, &iter,
+ CLUE_KEYWORD_COLUMN, &keyword,
+ CLUE_VALUE_COLUMN, &value,
+ -1);
/* Check if the keyword and value are not empty */
if ((keyword) && (value) && (g_utf8_strlen (g_strstrip (keyword), -1) > 0)
@@ -178,6 +180,10 @@ commit_changes (UIData *ui)
key = g_strdup_printf("%s=%s", keyword, value);
g_variant_builder_add (&b, "s", key);
}
+
+ g_free (keyword);
+ g_free (value);
+
valid = gtk_tree_model_iter_next (model, &iter);
}
@@ -260,6 +266,7 @@ key_cell_edited_callback (GtkCellRendererText *cell,
gtk_tree_model_get (model, &iter, CLUE_VALUE_COLUMN, &value, -1);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
CLUE_KEYWORD_COLUMN, new_text, CLUE_VALUE_COLUMN, value, -1);
+ g_free (value);
commit_changes (ui);
}
@@ -282,6 +289,7 @@ value_cell_edited_callback (GtkCellRendererText *cell,
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
CLUE_KEYWORD_COLUMN, keyword, CLUE_VALUE_COLUMN, new_text, -1);
+ g_free (keyword);
commit_changes (ui);
}
diff --git a/smime/gui/certificate-manager.c b/smime/gui/certificate-manager.c
index ac42e1d5ad..f8a3a1b118 100644
--- a/smime/gui/certificate-manager.c
+++ b/smime/gui/certificate-manager.c
@@ -461,6 +461,9 @@ find_cert_cb (GtkTreeModel *model,
fcd->path = gtk_tree_path_copy (path);
}
+ if (cert)
+ g_object_unref (cert);
+
return fcd->path != NULL;
}
@@ -515,6 +518,7 @@ view_cert (GtkWidget *button,
dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
gtk_widget_show (dialog);
+ g_object_unref (cert);
}
}
}
@@ -569,6 +573,7 @@ edit_cert (GtkWidget *button,
}
gtk_widget_destroy (dialog);
+ g_object_unref (cert);
}
}
}
@@ -671,6 +676,8 @@ delete_cert (GtkWidget *button,
* and added it to the tree */
g_object_unref (cert);
g_object_unref (cert);
+ } else if (cert) {
+ g_object_unref (cert);
}
}
diff --git a/widgets/e-timezone-dialog/e-timezone-dialog.c b/widgets/e-timezone-dialog/e-timezone-dialog.c
index c5ccfd3a4c..58fda69559 100644
--- a/widgets/e-timezone-dialog/e-timezone-dialog.c
+++ b/widgets/e-timezone-dialog/e-timezone-dialog.c
@@ -106,7 +106,7 @@ static void on_combo_changed (GtkComboBox *combo,
ETimezoneDialog *etd);
static void timezone_combo_get_active_text (GtkComboBox *combo,
- const gchar **zone_name);
+ gchar **zone_name);
static gboolean timezone_combo_set_active_text (GtkComboBox *combo,
const gchar *zone_name);
@@ -754,7 +754,7 @@ on_combo_changed (GtkComboBox *combo_box,
ETimezoneDialog *etd)
{
ETimezoneDialogPrivate *priv;
- const gchar *new_zone_name;
+ gchar *new_zone_name;
icalarray *zones;
icaltimezone *map_zone = NULL;
gchar *location;
@@ -765,7 +765,7 @@ on_combo_changed (GtkComboBox *combo_box,
timezone_combo_get_active_text (
GTK_COMBO_BOX (priv->timezone_combo), &new_zone_name);
- if (!*new_zone_name)
+ if (!new_zone_name || !*new_zone_name)
priv->zone = NULL;
else if (!g_utf8_collate (new_zone_name, _("UTC")))
priv->zone = icaltimezone_get_utc_timezone ();
@@ -784,11 +784,13 @@ on_combo_changed (GtkComboBox *combo_box,
}
set_map_timezone (etd, map_zone);
+
+ g_free (new_zone_name);
}
static void
timezone_combo_get_active_text (GtkComboBox *combo,
- const gchar **zone_name)
+ gchar **zone_name)
{
GtkTreeModel *list_store;
GtkTreeIter iter;
@@ -799,7 +801,7 @@ timezone_combo_get_active_text (GtkComboBox *combo,
if (gtk_combo_box_get_active_iter (combo, &iter))
gtk_tree_model_get (list_store, &iter, 0, zone_name, -1);
else
- *zone_name = "";
+ *zone_name = NULL;
}
static gboolean
diff --git a/widgets/misc/e-contact-map-window.c b/widgets/misc/e-contact-map-window.c
index 38fe56ccdf..4661024036 100644
--- a/widgets/misc/e-contact-map-window.c
+++ b/widgets/misc/e-contact-map-window.c
@@ -196,6 +196,7 @@ map_contact_removed_cb (EContactMap *map,
gchar *name_str;
gtk_tree_model_get (model, &iter, 0, &name_str, -1);
if (g_ascii_strcasecmp (name_str, name) == 0) {
+ g_free (name_str);
gtk_list_store_remove (priv->completion_model, &iter);
break;
}