diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2007-10-02 19:54:42 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@src.gnome.org> | 2007-10-02 19:54:42 +0800 |
commit | 09d4af6fff63dd112b8bb42087f14f7018e2f78c (patch) | |
tree | 991537a9ea1d8487334f6fb299098daf425f9db8 /mail/message-list.c | |
parent | 79521efaeecfbaf717e465670fcd2724aea53578 (diff) | |
download | gsoc2013-evolution-09d4af6fff63dd112b8bb42087f14f7018e2f78c.tar gsoc2013-evolution-09d4af6fff63dd112b8bb42087f14f7018e2f78c.tar.gz gsoc2013-evolution-09d4af6fff63dd112b8bb42087f14f7018e2f78c.tar.bz2 gsoc2013-evolution-09d4af6fff63dd112b8bb42087f14f7018e2f78c.tar.lz gsoc2013-evolution-09d4af6fff63dd112b8bb42087f14f7018e2f78c.tar.xz gsoc2013-evolution-09d4af6fff63dd112b8bb42087f14f7018e2f78c.tar.zst gsoc2013-evolution-09d4af6fff63dd112b8bb42087f14f7018e2f78c.zip |
** Fixes bug #469657
2007-10-02 Matthew Barnes <mbarnes@redhat.com>
** Fixes bug #469657
* addressbook/importers/evolution-ldif-importer.c:
* calendar/gui/comp-editor-factory.c:
* composer/e-msg-composer.c:
* e-util/e-config-listener.c:
* mail/em-composer-prefs.c:
* mail/em-folder-tree-model.c:
* mail/em-format.c:
* mail/em-format-html.c:
* mail/em-migrate.c:
* mail/em-subscribe-editor.c:
* mail/mail-component.c:
* mail/mail-send-recv.c:
* mail/message-list.c:
* mail/importers/elm-importer.c:
* plugins/exchange-operations/exchange-folder-size-display.c:
* plugins/mono/mono-plugin.c:
* shell/e-shell-settings-dialog.c:
* tools/killev.c:
* widgets/table/e-table-extras.c:
* widgets/table/e-table-selection-model.c:
Use destroy functions in GHashTables to simplify memory management.
svn path=/trunk/; revision=34344
Diffstat (limited to 'mail/message-list.c')
-rw-r--r-- | mail/message-list.c | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/mail/message-list.c b/mail/message-list.c index d359bb40d4..bc21e17bae 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -2065,7 +2065,10 @@ message_list_init (MessageList *message_list) gtk_scrolled_window_set_vadjustment ((GtkScrolledWindow *) message_list, adjustment); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (message_list), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); - message_list->normalised_hash = g_hash_table_new (g_str_hash, g_str_equal); + message_list->normalised_hash = g_hash_table_new_full ( + g_str_hash, g_str_equal, + (GDestroyNotify) NULL, + (GDestroyNotify) e_poolv_destroy); message_list->hidden = NULL; message_list->hidden_pool = NULL; @@ -2096,14 +2099,6 @@ message_list_init (MessageList *message_list) g_signal_connect (((GtkScrolledWindow *) message_list)->vscrollbar, "value-changed", G_CALLBACK (ml_scrolled), message_list); } -static gboolean -normalised_free (gpointer key, gpointer value, gpointer user_data) -{ - e_poolv_destroy (value); - - return TRUE; -} - static void message_list_destroy(GtkObject *object) { @@ -2169,7 +2164,6 @@ message_list_finalise (GObject *object) MessageList *message_list = MESSAGE_LIST (object); struct _MessageListPrivate *p = message_list->priv; - g_hash_table_foreach (message_list->normalised_hash, (GHFunc) normalised_free, NULL); g_hash_table_destroy (message_list->normalised_hash); if (message_list->thread_tree) @@ -3044,16 +3038,10 @@ main_folder_changed (CamelObject *o, gpointer event_data, gpointer user_data) d(printf("changed = %d added = %d removed = %d\n", changes->uid_changed->len, changes->uid_added->len, changes->uid_removed->len)); - for (i = 0; i < changes->uid_removed->len; i++) { - /* uncache the normalised strings for these uids */ - EPoolv *poolv; - - poolv = g_hash_table_lookup (ml->normalised_hash, changes->uid_removed->pdata[i]); - if (poolv != NULL) { - g_hash_table_remove (ml->normalised_hash, changes->uid_removed->pdata[i]); - e_poolv_destroy (poolv); - } - } + for (i = 0; i < changes->uid_removed->len; i++) + g_hash_table_remove ( + ml->normalised_hash, + changes->uid_removed->pdata[i]); /* check if the hidden state has changed, if so modify accordingly, then regenerate */ if (ml->hidejunk || ml->hidedeleted) @@ -3132,7 +3120,7 @@ message_list_set_folder (MessageList *message_list, CamelFolder *folder, const c } /* reset the normalised sort performance hack */ - g_hash_table_foreach_remove (message_list->normalised_hash, normalised_free, NULL); + g_hash_table_remove_all (message_list->normalised_hash); mail_regen_cancel(message_list); |