[balsa/wip/gtk4: 120/351] Use various convenience functions
- From: Peter Bloomfield <peterb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [balsa/wip/gtk4: 120/351] Use various convenience functions
- Date: Wed, 23 May 2018 21:27:02 +0000 (UTC)
commit f2bfd1a948520ba738072240ccddf3e255b7529d
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Tue Jan 9 16:04:06 2018 -0500
Use various convenience functions
Use various convenience functions for freeing and clearing lists,
GObjects, and other pointers.
libbalsa/address-book-extern.c | 5 +--
libbalsa/address-book-ldif.c | 3 +-
libbalsa/address-book-osmo.c | 4 +-
libbalsa/address-book-rubrica.c | 5 +---
libbalsa/address-book-text.c | 5 +---
libbalsa/address-book-vcard.c | 3 +-
libbalsa/address-view.c | 6 +---
libbalsa/address.c | 6 +---
libbalsa/completion.c | 51 +++++++++++++-------------------------
libbalsa/filter-file.c | 7 ++---
libbalsa/filter-funcs.c | 5 +---
libbalsa/folder-scanners.c | 3 +-
libbalsa/identity.c | 3 +-
libbalsa/imap-server.c | 14 ++++-------
libbalsa/libbalsa.c | 8 +++---
libbalsa/mailbox.c | 3 +-
libbalsa/mailbox_local.c | 5 +--
libbalsa/message.h | 3 +-
libbalsa/misc.c | 26 +++++++++++++++++--
libbalsa/misc.h | 2 +
libbalsa/rfc2445.c | 10 ++-----
libbalsa/send.c | 20 ++++++---------
src/balsa-app.c | 25 ++++--------------
src/balsa-index.c | 3 +-
src/balsa-mblist.c | 7 +----
src/balsa-message.c | 15 +++--------
src/balsa-mime-widget-text.c | 17 ++++---------
src/balsa-print-object-text.c | 5 +---
src/filter-edit-callbacks.c | 19 +++-----------
src/filter-run-callbacks.c | 5 +--
src/main-window.c | 3 +-
src/print-gtk.c | 3 +-
src/save-restore.c | 6 +---
src/sendmsg-window.c | 39 ++++++++++++-----------------
src/store-address.c | 3 +-
35 files changed, 131 insertions(+), 216 deletions(-)
---
diff --git a/libbalsa/address-book-extern.c b/libbalsa/address-book-extern.c
index 9ee3ace..2b4d025 100644
--- a/libbalsa/address-book-extern.c
+++ b/libbalsa/address-book-extern.c
@@ -48,6 +48,7 @@
#include "address-book.h"
#include "libbalsa-conf.h"
#include "information.h"
+#include "misc.h"
#include "abook-completion.h"
#include <glib/gi18n.h>
@@ -224,9 +225,7 @@ libbalsa_address_book_externq_load(LibBalsaAddressBook * ab,
LibBalsaAddressBookExtern *addr_externq = LIBBALSA_ADDRESS_BOOK_EXTERN(ab);
/* Erase the current address list */
- g_list_foreach(addr_externq->address_list, (GFunc) g_object_unref, NULL);
- g_list_free(addr_externq->address_list);
- addr_externq->address_list = NULL;
+ libbalsa_clear_list(&addr_externq->address_list, g_object_unref);
if(callback) {
data.ab = ab;
data.callback = callback;
diff --git a/libbalsa/address-book-ldif.c b/libbalsa/address-book-ldif.c
index f0c5b6f..5cd451b 100644
--- a/libbalsa/address-book-ldif.c
+++ b/libbalsa/address-book-ldif.c
@@ -399,8 +399,7 @@ libbalsa_address_book_ldif_parse_address(FILE * stream,
g_free(line);
return LBABERR_OK;
}
- g_list_foreach(address_list, (GFunc) g_free, NULL);
- g_list_free(address_list);
+ g_list_free_full(address_list, g_free);
}
/* Record without e-mail address, or we're not creating
* addresses: free memory. */
diff --git a/libbalsa/address-book-osmo.c b/libbalsa/address-book-osmo.c
index 0b00db8..4014666 100644
--- a/libbalsa/address-book-osmo.c
+++ b/libbalsa/address-book-osmo.c
@@ -40,6 +40,7 @@
#include "address-book.h"
#include "rfc6350.h"
#include "address-book-osmo.h"
+#include "misc.h"
/* for the time being, osmo svn rev. 1099 accepts only reading via DBus, not writing new or modified records
*/
@@ -337,8 +338,7 @@ osmo_read_addresses(LibBalsaAddressBookOsmo *osmo,
/* drop list on error, reverse order otherwise */
if (addresses != NULL) {
if (*error != NULL) {
- g_list_free_full(addresses, g_object_unref);
- addresses = NULL;
+ libbalsa_clear_list(&addresses, g_object_unref);
} else {
addresses = g_list_reverse(addresses);
}
diff --git a/libbalsa/address-book-rubrica.c b/libbalsa/address-book-rubrica.c
index 45fe627..2977de6 100644
--- a/libbalsa/address-book-rubrica.c
+++ b/libbalsa/address-book-rubrica.c
@@ -418,10 +418,7 @@ lbab_rubrica_load_xml(LibBalsaAddressBookRubrica * ab_rubrica,
}
/* free old data */
- g_slist_foreach(ab_text->item_list, (GFunc) g_object_unref, NULL);
- g_slist_free(ab_text->item_list);
- ab_text->item_list = NULL;
-
+ libbalsa_clear_slist(&ab_text->item_list, g_object_unref);
libbalsa_completion_clear_items(ab_text->name_complete);
diff --git a/libbalsa/address-book-text.c b/libbalsa/address-book-text.c
index 2c58acb..7f1948d 100644
--- a/libbalsa/address-book-text.c
+++ b/libbalsa/address-book-text.c
@@ -298,10 +298,7 @@ lbab_text_load_file(LibBalsaAddressBookText * ab_text, FILE * stream)
if (!lbab_text_address_book_need_reload(ab_text))
return TRUE;
- g_slist_foreach(ab_text->item_list, (GFunc) lbab_text_item_free, NULL);
- g_slist_free(ab_text->item_list);
- ab_text->item_list = NULL;
-
+ libbalsa_clear_slist(&ab_text->item_list, (GDestroyNotify) lbab_text_item_free);
libbalsa_completion_clear_items(ab_text->name_complete);
parse_address =
diff --git a/libbalsa/address-book-vcard.c b/libbalsa/address-book-vcard.c
index 7dbe600..2a20c1a 100644
--- a/libbalsa/address-book-vcard.c
+++ b/libbalsa/address-book-vcard.c
@@ -263,8 +263,7 @@ libbalsa_address_book_vcard_parse_address(FILE * stream,
return LBABERR_OK;
}
- g_list_foreach(address_list, (GFunc) g_free, NULL);
- g_list_free(address_list);
+ g_list_free_full(address_list, g_free);
}
/* Record without e-mail address, or we're not creating
* addresses: free memory. */
diff --git a/libbalsa/address-view.c b/libbalsa/address-view.c
index a816c6d..864c529 100644
--- a/libbalsa/address-view.c
+++ b/libbalsa/address-view.c
@@ -254,8 +254,7 @@ lbav_entry_setup_matches(LibBalsaAddressView * address_view,
if (*prefix)
match = lbav_get_matching_addresses(address_view, prefix, type);
lbav_append_addresses(address_view, completion, match, prefix);
- g_list_foreach(match, (GFunc) g_object_unref, NULL);
- g_list_free(match);
+ g_list_free_full(match, g_object_unref);
}
/*
@@ -775,8 +774,7 @@ lbav_focus_out_cb(GtkEntry * entry, GdkEventFocus * event,
gtk_cell_editable_editing_done(GTK_CELL_EDITABLE(entry));
g_free(the_addr);
}
- g_list_foreach(match, (GFunc) g_object_unref, NULL);
- g_list_free(match);
+ g_list_free_full(match, g_object_unref);
}
}
diff --git a/libbalsa/address.c b/libbalsa/address.c
index 698fe10..e70cd46 100644
--- a/libbalsa/address.c
+++ b/libbalsa/address.c
@@ -511,8 +511,7 @@ libbalsa_address_new_from_vcard(const gchar *str, const gchar *charset)
g_free(first_name);
g_free(nick_name);
g_free(org);
- g_list_foreach(address_list, (GFunc) g_free, NULL);
- g_list_free(address_list);
+ g_list_free_full(address_list, g_free);
return NULL;
}
@@ -535,8 +534,7 @@ libbalsa_address_set_copy(LibBalsaAddress * dest, LibBalsaAddress * src)
dest->last_name = g_strdup(src->last_name);
g_free(dest->organization);
dest->organization = g_strdup(src->organization);
- g_list_foreach(dest->address_list, (GFunc) g_free, NULL);
- g_list_free(dest->address_list);
+ g_list_free_full(dest->address_list, g_free);
dst_al = NULL;
for (src_al = src->address_list; src_al; src_al = src_al->next)
diff --git a/libbalsa/completion.c b/libbalsa/completion.c
index 086190b..840a320 100644
--- a/libbalsa/completion.c
+++ b/libbalsa/completion.c
@@ -56,8 +56,10 @@
#include <string.h>
#include <glib.h>
+#include "config.h"
#include "completion.h"
#include "abook-completion.h"
+#include "misc.h"
/**
* SECTION: completion
@@ -166,20 +168,11 @@ libbalsa_completion_add_items(LibBalsaCompletion * cmp,
g_return_if_fail(cmp != NULL);
/* optimize adding to cache? */
- if (cmp->cache) {
- g_list_free(cmp->cache);
- cmp->cache = NULL;
- }
-
- if (cmp->prefix) {
- g_free(cmp->prefix);
- cmp->prefix = NULL;
- }
+ g_clear_pointer(&cmp->cache, (GDestroyNotify) g_list_free);
+ g_clear_pointer(&cmp->prefix, (GDestroyNotify) g_free);
- it = items;
- while (it) {
+ for (it = items; it != NULL; it = it->next) {
cmp->items = g_list_prepend(cmp->items, it->data);
- it = it->next;
}
}
@@ -194,12 +187,9 @@ libbalsa_completion_clear_items(LibBalsaCompletion * cmp)
{
g_return_if_fail(cmp != NULL);
- g_list_free_full(cmp->items, (GDestroyNotify) completion_data_free);
- cmp->items = NULL;
- g_list_free(cmp->cache);
- cmp->cache = NULL;
- g_free(cmp->prefix);
- cmp->prefix = NULL;
+ libbalsa_clear_list(&cmp->items, (GDestroyNotify) completion_data_free);
+ g_clear_pointer(&cmp->cache, (GDestroyNotify) g_list_free);
+ g_clear_pointer(&cmp->prefix, (GDestroyNotify) g_free);
}
/**
@@ -248,26 +238,21 @@ libbalsa_completion_complete(LibBalsaCompletion * cmp,
if (!done) {
/* normal code */
- g_list_free(cmp->cache);
- cmp->cache = NULL;
- list = cmp->items;
- while (*prefix && list) {
- if (!cmp->strncmp_func(prefix,
- cmp->func ? cmp->func(list->
- data) : (gchar *)
- list->data, len))
+ g_clear_pointer(&cmp->cache, (GDestroyNotify) g_list_free);
+ for (list = cmp->items; list != NULL && *prefix != '\0'; list = list->next) {
+ if (cmp->strncmp_func(prefix,
+ cmp->func ? cmp->func(list->data)
+ : (gchar *) list->data,
+ len) == 0) {
cmp->cache = g_list_prepend(cmp->cache, list->data);
- list = list->next;
+ }
}
}
- if (cmp->prefix) {
- g_free(cmp->prefix);
- cmp->prefix = NULL;
- }
- if (cmp->cache)
+ g_clear_pointer(&cmp->prefix, (GDestroyNotify) g_free);
+ if (cmp->cache != NULL)
cmp->prefix = g_strdup(prefix);
- return *prefix ? cmp->cache : cmp->items;
+ return *prefix != '\0' ? cmp->cache : cmp->items;
}
/**
diff --git a/libbalsa/filter-file.c b/libbalsa/filter-file.c
index d783301..d0c874e 100644
--- a/libbalsa/filter-file.c
+++ b/libbalsa/filter-file.c
@@ -369,10 +369,9 @@ libbalsa_condition_new_2_0(const gchar * filter_section_name,
we create the combined condition. */
info.tmp_list =
g_list_sort(info.tmp_list, compare_conditions_order);
- l = info.tmp_list;
- for (; info.tmp_list; info.tmp_list = info.tmp_list->next) {
+ for (l = info.tmp_list; l != NULL; l = l->next) {
LibBalsaTempCondition *tmp =
- (LibBalsaTempCondition *) (info.tmp_list->data);
+ (LibBalsaTempCondition *) (l->data);
LibBalsaCondition *res =
libbalsa_condition_new_bool_ptr(FALSE, cmt, tmp->cnd,
cond_2_0);
@@ -381,7 +380,7 @@ libbalsa_condition_new_2_0(const gchar * filter_section_name,
cond_2_0 = res;
g_free(tmp);
}
- g_list_free(l);
+ g_list_free(info.tmp_list);
}
/* else we leak the list and structures?? */
return cond_2_0;
diff --git a/libbalsa/filter-funcs.c b/libbalsa/filter-funcs.c
index 859c8b1..64541a6 100644
--- a/libbalsa/filter-funcs.c
+++ b/libbalsa/filter-funcs.c
@@ -500,10 +500,7 @@ libbalsa_condition_regex_free(LibBalsaConditionRegex* reg, gpointer throwaway)
void
regexs_free(GSList * regexs)
{
- if (regexs) {
- g_slist_foreach(regexs, (GFunc) libbalsa_condition_regex_free, NULL);
- g_slist_free(regexs);
- }
+ g_slist_free_full(regexs, (GDestroyNotify) libbalsa_condition_regex_free);
} /* end condition_free_regexs() */
void
diff --git a/libbalsa/folder-scanners.c b/libbalsa/folder-scanners.c
index 1a3dbe2..b2822c6 100644
--- a/libbalsa/folder-scanners.c
+++ b/libbalsa/folder-scanners.c
@@ -387,8 +387,7 @@ libbalsa_imap_browse(const gchar * path, struct browser_state *state,
--*depth;
- g_list_foreach(list, (GFunc) g_free, NULL);
- g_list_free(list);
+ g_list_free_full(list, g_free);
return ret;
}
diff --git a/libbalsa/identity.c b/libbalsa/identity.c
index d9c3e34..55dbcd0 100644
--- a/libbalsa/identity.c
+++ b/libbalsa/identity.c
@@ -1730,8 +1730,7 @@ help_ident_cb(GtkWidget * widget)
static void
lbi_free_smtp_server_list(GSList ** smtp_server_list)
{
- g_slist_foreach(*smtp_server_list, (GFunc) g_object_unref, NULL);
- g_slist_free(*smtp_server_list);
+ g_slist_free_full(*smtp_server_list, g_object_unref);
g_free(smtp_server_list);
}
diff --git a/libbalsa/imap-server.c b/libbalsa/imap-server.c
index e8cc9f2..4426a23 100644
--- a/libbalsa/imap-server.c
+++ b/libbalsa/imap-server.c
@@ -855,15 +855,11 @@ libbalsa_imap_server_has_persistent_cache(LibBalsaImapServer *srv)
void
libbalsa_imap_server_force_disconnect(LibBalsaImapServer *imap_server)
{
- g_mutex_lock(&imap_server->lock);
- g_list_foreach(imap_server->used_handles,
- (GFunc) lb_imap_server_info_free, NULL);
- g_list_free(imap_server->used_handles);
- imap_server->used_handles = NULL;
- g_list_foreach(imap_server->free_handles,
- (GFunc) lb_imap_server_info_free, NULL);
- g_list_free(imap_server->free_handles);
- imap_server->free_handles = NULL;
+ g_mutex_lock(&imap_server->lock);
+
+ libbalsa_clear_list(&imap_server->used_handles, (GDestroyNotify) lb_imap_server_info_free);
+ libbalsa_clear_list(&imap_server->free_handles, (GDestroyNotify) lb_imap_server_info_free);
+
g_mutex_unlock(&imap_server->lock);
}
diff --git a/libbalsa/libbalsa.c b/libbalsa/libbalsa.c
index a4266ab..96a58b3 100644
--- a/libbalsa/libbalsa.c
+++ b/libbalsa/libbalsa.c
@@ -416,10 +416,10 @@ static GMutex certificate_lock;
void
libbalsa_certs_destroy(void)
{
- g_mutex_lock(&certificate_lock);
- g_list_foreach(accepted_certs, (GFunc)X509_free, NULL);
- g_list_free(accepted_certs);
- accepted_certs = NULL;
+ g_mutex_lock(&certificate_lock);
+
+ libbalsa_clear_list(&accepted_certs, (GDestroyNotify) X509_free);
+
g_mutex_unlock(&certificate_lock);
}
diff --git a/libbalsa/mailbox.c b/libbalsa/mailbox.c
index 59f1396..013bd95 100644
--- a/libbalsa/mailbox.c
+++ b/libbalsa/mailbox.c
@@ -4002,8 +4002,7 @@ lbm_try_reassemble_idle(LibBalsaMailbox * mailbox)
for (id = ids; id; id = id->next)
lbm_try_reassemble(mailbox, id->data);
- g_slist_foreach(ids, (GFunc) g_free, NULL);
- g_slist_free(ids);
+ g_slist_free_full(ids, g_free);
g_object_set_data(G_OBJECT(mailbox), LBM_TRY_REASSEMBLE_IDS, NULL);
libbalsa_unlock_mailbox(mailbox);
diff --git a/libbalsa/mailbox_local.c b/libbalsa/mailbox_local.c
index 848e32d..61650c0 100644
--- a/libbalsa/mailbox_local.c
+++ b/libbalsa/mailbox_local.c
@@ -373,10 +373,9 @@ typedef struct {
static void
lbm_local_free_info(LibBalsaMailboxLocalInfo * info)
{
- if (info) {
+ if (info != NULL) {
g_free(info->message_id);
- g_list_foreach(info->refs_for_threading, (GFunc) g_free, NULL);
- g_list_free(info->refs_for_threading);
+ g_list_free_full(info->refs_for_threading, g_free);
g_free(info->sender);
g_free(info);
}
diff --git a/libbalsa/message.h b/libbalsa/message.h
index 49c7dd9..3cc11c0 100644
--- a/libbalsa/message.h
+++ b/libbalsa/message.h
@@ -157,8 +157,7 @@ struct _LibBalsaMessageHeaders {
};
/** FREE_HEADER_LIST() frees user_hdrs */
-#define FREE_HEADER_LIST(l) do{ g_list_foreach((l),(GFunc)g_strfreev,NULL);\
- g_list_free(l); } while(0)
+#define FREE_HEADER_LIST(l) g_list_free_full((l),(GDestroyNotify)g_strfreev)
struct _LibBalsaMessage {
GObject object;
diff --git a/libbalsa/misc.c b/libbalsa/misc.c
index e0bfcb9..448e112 100644
--- a/libbalsa/misc.c
+++ b/libbalsa/misc.c
@@ -1221,12 +1221,32 @@ libbalsa_clear_source_id(guint * tag)
{
gboolean retval;
- g_return_val_if_fail(tag != NULL, FALSE);
-
- if ((retval = (*tag != 0U))) {
+ retval = *tag != 0U;
+ if (retval) {
g_source_remove(*tag);
*tag = 0U;
}
return retval;
}
+
+/*
+ * Convenience functions for freeing list items' data and clearing the
+ * list
+ *
+ * If the data do not need to be freed, just use
+ * g_clear_pointer(&list, (GDestroyNotify) g_list_free);
+ */
+void
+libbalsa_clear_list(GList ** list, GDestroyNotify free_func)
+{
+ g_list_free_full(*list, free_func);
+ *list = NULL;
+}
+
+void
+libbalsa_clear_slist(GSList ** list, GDestroyNotify free_func)
+{
+ g_slist_free_full(*list, free_func);
+ *list = NULL;
+}
diff --git a/libbalsa/misc.h b/libbalsa/misc.h
index 9756236..6ba1880 100644
--- a/libbalsa/misc.h
+++ b/libbalsa/misc.h
@@ -159,5 +159,7 @@ GString * libbalsa_html_encode_hyperlinks(GString * paragraph);
gchar *libbalsa_font_string_to_css(const gchar * font_string, const gchar * name);
gboolean libbalsa_clear_source_id(guint * tag);
+void libbalsa_clear_list(GList ** list, GDestroyNotify free_func);
+void libbalsa_clear_slist(GSList ** list, GDestroyNotify free_func);
#endif /* __LIBBALSA_MISC_H__ */
diff --git a/libbalsa/rfc2445.c b/libbalsa/rfc2445.c
index cfa5f10..ce2009a 100644
--- a/libbalsa/rfc2445.c
+++ b/libbalsa/rfc2445.c
@@ -148,9 +148,7 @@ libbalsa_vcal_finalize(LibBalsaVCal * self)
{
g_return_if_fail(self != NULL);
- if (self->vevent) {
- g_list_free_full(self->vevent, g_object_unref);
- }
+ g_list_free_full(self->vevent, g_object_unref);
libbalsa_vcal_parent_class->finalize(G_OBJECT(self));
}
@@ -215,12 +213,10 @@ libbalsa_vevent_finalize(LibBalsaVEvent * self)
{
g_return_if_fail(self != NULL);
- if (self->organizer)
+ if (self->organizer) {
g_object_unref(self->organizer);
- if (self->attendee) {
- g_list_foreach(self->attendee, (GFunc) g_object_unref, NULL);
- g_list_free(self->attendee);
}
+ g_list_free_full(self->attendee, g_object_unref);
g_free(self->uid);
g_free(self->summary);
g_free(self->location);
diff --git a/libbalsa/send.c b/libbalsa/send.c
index bb234b9..eb48202 100644
--- a/libbalsa/send.c
+++ b/libbalsa/send.c
@@ -213,19 +213,16 @@ send_message_info_new(LibBalsaSmtpServer *smtp_server,
static void
send_message_info_destroy(SendMessageInfo *smi)
{
- if (smi->outbox != NULL) {
- g_object_unref(G_OBJECT(smi->outbox));
- }
+ if (smi->outbox != NULL) {
+ g_object_unref(G_OBJECT(smi->outbox));
+ }
if (smi->session != NULL) {
g_object_unref(G_OBJECT(smi->session));
}
- if (smi->items != NULL) {
- g_list_free_full(smi->items, (GDestroyNotify) msg_queue_item_destroy);
- }
- if (smi->progress_id != NULL) {
- g_free(smi->progress_id);
- }
+ g_list_free_full(smi->items, (GDestroyNotify) msg_queue_item_destroy);
+ g_free(smi->progress_id);
g_object_unref(smi->smtp_server);
+
g_free(smi);
}
@@ -1821,8 +1818,7 @@ libbalsa_create_rfc2440_buffer(LibBalsaMessage *message,
always_trust,
parent, error);
}
- g_list_foreach(encrypt_for, (GFunc) g_free, NULL);
- g_list_free(encrypt_for);
+ g_list_free_full(encrypt_for, g_free);
if (!result) {
return LIBBALSA_MESSAGE_ENCRYPT_ERROR;
}
@@ -1909,7 +1905,7 @@ do_multipart_crypto(LibBalsaMessage *message,
protocol, always_trust,
parent, error);
}
- g_list_free_full(encrypt_for, (GDestroyNotify) g_free);
+ g_list_free_full(encrypt_for, g_free);
if (!success) {
return LIBBALSA_MESSAGE_ENCRYPT_ERROR;
diff --git a/src/balsa-app.c b/src/balsa-app.c
index f8b18c6..ff97981 100644
--- a/src/balsa-app.c
+++ b/src/balsa-app.c
@@ -412,29 +412,16 @@ balsa_app_destroy(void)
{
config_save();
- g_list_foreach(balsa_app.address_book_list, (GFunc)g_object_unref, NULL);
- g_list_free(balsa_app.address_book_list);
- balsa_app.address_book_list = NULL;
+ libbalsa_clear_list(&balsa_app.address_book_list, g_object_unref);
/* now free filters */
- g_slist_foreach(balsa_app.filters, (GFunc)libbalsa_filter_free,
+ g_slist_foreach(balsa_app.filters, (GFunc)libbalsa_filter_free,
GINT_TO_POINTER(TRUE));
- g_slist_free(balsa_app.filters);
- balsa_app.filters = NULL;
-
- g_list_foreach(balsa_app.identities, (GFunc)g_object_unref, NULL);
- g_list_free(balsa_app.identities);
- balsa_app.identities = NULL;
-
-
- g_list_foreach(balsa_app.folder_mru, (GFunc)g_free, NULL);
- g_list_free(balsa_app.folder_mru);
- balsa_app.folder_mru = NULL;
-
- g_list_foreach(balsa_app.fcc_mru, (GFunc)g_free, NULL);
- g_list_free(balsa_app.fcc_mru);
- balsa_app.fcc_mru = NULL;
+ g_clear_pointer(&balsa_app.filters, (GDestroyNotify) g_slist_free);
+ libbalsa_clear_list(&balsa_app.identities, g_object_unref);
+ libbalsa_clear_list(&balsa_app.folder_mru, g_free);
+ libbalsa_clear_list(&balsa_app.fcc_mru, g_free);
if(balsa_app.debug) g_print("balsa_app: Finished cleaning up.\n");
}
diff --git a/src/balsa-index.c b/src/balsa-index.c
index 394effc..1800c5c 100644
--- a/src/balsa-index.c
+++ b/src/balsa-index.c
@@ -1494,8 +1494,7 @@ bndx_store_address(gpointer data)
GList *messages = balsa_index_selected_list(BALSA_INDEX(data));
balsa_store_address_from_messages(messages);
- g_list_foreach(messages, (GFunc)g_object_unref, NULL);
- g_list_free(messages);
+ g_list_free_full(messages, g_object_unref);
}
static void
diff --git a/src/balsa-mblist.c b/src/balsa-mblist.c
index 4cb666f..ac8d6db 100644
--- a/src/balsa-mblist.c
+++ b/src/balsa-mblist.c
@@ -1977,9 +1977,7 @@ bmbl_mru_combo_box_setup(GtkComboBox * combo_box)
gtk_combo_box_set_active(combo_box, -1);
store = GTK_LIST_STORE(gtk_combo_box_get_model(combo_box));
gtk_list_store_clear(store);
- g_slist_foreach(mro->real_urls, (GFunc) g_free, NULL);
- g_slist_free(mro->real_urls);
- mro->real_urls = NULL;
+ libbalsa_clear_slist(&mro->real_urls, g_free);
for (list = *mro->url_list; list; list = list->next) {
const gchar *url = list->data;
@@ -2035,8 +2033,7 @@ bmbl_mru_combo_box_changed(GtkComboBox * combo_box,
static void
bmbl_mru_combo_box_destroy_cb(BalsaMBListMRUOption * mro)
{
- g_slist_foreach(mro->real_urls, (GFunc) g_free, NULL);
- g_slist_free(mro->real_urls);
+ g_slist_free_full(mro->real_urls, g_free);
g_free(mro);
}
diff --git a/src/balsa-message.c b/src/balsa-message.c
index 0025793..33a9901 100644
--- a/src/balsa-message.c
+++ b/src/balsa-message.c
@@ -814,9 +814,7 @@ balsa_message_destroy(GObject * object)
bm->treeview = NULL;
}
- g_list_free(bm->save_all_list);
- bm->save_all_list = NULL;
-
+ g_clear_pointer(&bm->save_all_list, (GDestroyNotify) g_list_free);
g_clear_object(&bm->save_all_popup);
g_clear_object(&bm->parts_popup);
g_clear_object(&bm->bm_widget);
@@ -923,12 +921,8 @@ tree_mult_selection_popup(BalsaMessage * bm, const GdkEvent * event,
gint selected;
/* destroy left-over select list and popup... */
- g_list_free(bm->save_all_list);
- bm->save_all_list = NULL;
- if (bm->save_all_popup) {
- g_object_unref(bm->save_all_popup);
- bm->save_all_popup = NULL;
- }
+ g_clear_pointer(&bm->save_all_list, (GDestroyNotify) g_list_free);
+ g_clear_object(&bm->save_all_popup);
/* collect all selected info blocks */
gtk_tree_selection_selected_foreach(selection,
@@ -950,8 +944,7 @@ tree_mult_selection_popup(BalsaMessage * bm, const GdkEvent * event,
NULL);
}
}
- g_list_free(bm->save_all_list);
- bm->save_all_list = NULL;
+ g_clear_pointer(&bm->save_all_list, (GDestroyNotify) g_list_free);
} else if (selected > 1) {
GtkWidget *menu_item;
diff --git a/src/balsa-mime-widget-text.c b/src/balsa-mime-widget-text.c
index 53f3d81..1a92427 100644
--- a/src/balsa-mime-widget-text.c
+++ b/src/balsa-mime-widget-text.c
@@ -110,7 +110,7 @@ static void check_call_url(GtkGestureMultiPress *multi_press,
gpointer user_data);
static message_url_t * find_url(GtkWidget * widget, gint x, gint y, GList * url_list);
static void handle_url(const gchar* url);
-static void free_url_list(GList * url_list);
+static void free_url(message_url_t * url);
static void bm_widget_on_url(const gchar *url);
static void phrase_highlight(GtkTextBuffer * buffer, const gchar * id,
gunichar tag_char, const gchar * property,
@@ -154,7 +154,7 @@ balsa_mime_widget_text_finalize(GObject * gobject) {
BalsaMimeWidgetText *mwt;
mwt = BALSA_MIME_WIDGET_TEXT(gobject);
- free_url_list(mwt->url_list);
+ g_list_free_full(mwt->url_list, (GDestroyNotify) free_url);
G_OBJECT_CLASS(balsa_mime_widget_text_parent_class)->finalize(gobject);
}
@@ -874,17 +874,10 @@ handle_url(const gchar * url)
}
static void
-free_url_list(GList * url_list)
+free_url(message_url_t * url)
{
- GList *list;
-
- for (list = url_list; list != NULL; list = list->next) {
- message_url_t *url_data = (message_url_t *) list->data;
-
- g_free(url_data->url);
- g_free(url_data);
- }
- g_list_free(url_list);
+ g_free(url->url);
+ g_free(url);
}
/* --- Hacker's Jargon highlighting --- */
diff --git a/src/balsa-print-object-text.c b/src/balsa-print-object-text.c
index df96ffb..298a459 100644
--- a/src/balsa-print-object-text.c
+++ b/src/balsa-print-object-text.c
@@ -307,10 +307,7 @@ balsa_print_object_text_plain(GList *list, GtkPrintContext * context,
g_array_remove_index(attr_offs, 0);
this_par_part = this_par_part->next;
}
- if (attr_list) {
- g_list_foreach(attr_list, (GFunc) g_free, NULL);
- g_list_free(attr_list);
- }
+ g_list_free_full(attr_list, g_free);
g_list_free(par_parts);
g_array_free(attr_offs, TRUE);
}
diff --git a/src/filter-edit-callbacks.c b/src/filter-edit-callbacks.c
index 8ce273c..1157947 100644
--- a/src/filter-edit-callbacks.c
+++ b/src/filter-edit-callbacks.c
@@ -1336,9 +1336,7 @@ update_filters_mailbox(GtkTreeModel * model, GtkTreePath * path,
return FALSE;
/* First we free the filters list (which is now obsolete) */
- g_slist_foreach(mailbox->filters, (GFunc) g_free, NULL);
- g_slist_free(mailbox->filters);
- mailbox->filters = NULL;
+ libbalsa_clear_slist(&mailbox->filters, g_free);
/* Second we replace old filters name by the new ones
* Note : deleted filters are also removed */
if (!filters_names_changes)
@@ -1427,21 +1425,12 @@ void fe_destroy_window_cb(GtkWidget * widget,gpointer throwaway)
g_free(((filters_names_rec *)lst->data)->new_name);
g_free((filters_names_rec *)lst->data);
}
+ g_clear_pointer(&filters_names_changes, (GDestroyNotify) g_list_free);
- g_list_free(filters_names_changes);
- filters_names_changes=NULL;
-
- for (lst = new_filters_names; lst != NULL; lst = lst->next) {
- g_free((gchar *)lst->data);
- }
-
- g_list_free(new_filters_names);
- new_filters_names=NULL;
+ libbalsa_clear_list(&new_filters_names, g_free);
/* free all strings in fe_user_headers_list */
- g_list_foreach(fe_user_headers_list,(GFunc)g_free,NULL);
- g_list_free(fe_user_headers_list);
- fe_user_headers_list = NULL;
+ libbalsa_clear_list(&fe_user_headers_list, g_free);
fe_already_open=FALSE;
}
diff --git a/src/filter-run-callbacks.c b/src/filter-run-callbacks.c
index 282a183..8b355f0 100644
--- a/src/filter-run-callbacks.c
+++ b/src/filter-run-callbacks.c
@@ -146,9 +146,8 @@ static
void save_filters(BalsaFilterRunDialog * p)
{
if (p->filters_modified) {
- g_slist_foreach(p->mbox->filters, (GFunc) g_free, NULL);
- g_slist_free(p->mbox->filters);
- p->mbox->filters=build_selected_filters_list(p->selected_filters,FALSE);
+ g_slist_free_full(p->mbox->filters, g_free);
+ p->mbox->filters = build_selected_filters_list(p->selected_filters,FALSE);
config_mailbox_filters_save(p->mbox);
p->filters_modified=FALSE;
}
diff --git a/src/main-window.c b/src/main-window.c
index 25440d7..c01f3ee 100644
--- a/src/main-window.c
+++ b/src/main-window.c
@@ -3465,8 +3465,7 @@ bw_check_messages_thread(struct check_messages_thread_info *info)
libbalsa_progress_dialog_ensure(&progress_dialog, _("Checking Mail…"),
GTK_WINDOW(info->window), _("Mailboxes"));
}
g_slist_foreach(list, (GFunc) bw_mailbox_check, info);
- g_slist_foreach(list, (GFunc) g_object_unref, NULL);
- g_slist_free(list);
+ g_slist_free_full(list, g_object_unref);
if (info->with_progress_dialog) {
libbalsa_progress_dialog_update(&progress_dialog, _("Mailboxes"), TRUE, 1.0, NULL);
}
diff --git a/src/print-gtk.c b/src/print-gtk.c
index 400e933..81d65b8 100644
--- a/src/print-gtk.c
+++ b/src/print-gtk.c
@@ -745,8 +745,7 @@ message_print(LibBalsaMessage * msg, GtkWindow * parent)
/* clean up */
if (err)
g_error_free(err);
- g_list_foreach(print_data->print_parts, (GFunc) g_object_unref, NULL);
- g_list_free(print_data->print_parts);
+ g_list_free_full(print_data->print_parts, g_object_unref);
g_free(print_data->footer);
g_free(print_data);
g_object_unref(G_OBJECT(print));
diff --git a/src/save-restore.c b/src/save-restore.c
index 5906516..97e0a25 100644
--- a/src/save-restore.c
+++ b/src/save-restore.c
@@ -1549,8 +1549,7 @@ config_address_books_load(void)
libbalsa_conf_pop_group();
/* Free old data in case address books were set by eg. config druid. */
- g_list_free_full(balsa_app.address_book_list, g_object_unref);
- balsa_app.address_book_list = NULL;
+ libbalsa_clear_list(&balsa_app.address_book_list, g_object_unref);
libbalsa_conf_foreach_group(ADDRESS_BOOK_SECTION_PREFIX,
config_address_book_load,
@@ -1619,8 +1618,7 @@ config_identities_load()
gchar *default_ident;
/* Free old data in case identities were set by eg. config druid. */
- g_list_free_full(balsa_app.identities, g_object_unref);
- balsa_app.identities = NULL;
+ libbalsa_clear_list(&balsa_app.identities, g_object_unref);
libbalsa_conf_push_group("identity");
default_ident = libbalsa_conf_get_string("CurrentIdentity");
diff --git a/src/sendmsg-window.c b/src/sendmsg-window.c
index f44dab6..fe63b9f 100644
--- a/src/sendmsg-window.c
+++ b/src/sendmsg-window.c
@@ -627,11 +627,7 @@ balsa_sendmsg_destroy_handler(BalsaSendmsg * bsmsg)
quit_on_close = bsmsg->quit_on_close;
g_free(bsmsg->fcc_url);
g_free(bsmsg->in_reply_to);
- if(bsmsg->references) {
- g_list_foreach(bsmsg->references, (GFunc) g_free, NULL);
- g_list_free(bsmsg->references);
- bsmsg->references = NULL;
- }
+ libbalsa_clear_list(&bsmsg->references, g_free);
#if !(HAVE_GSPELL || HAVE_GTKSPELL)
if (bsmsg->spell_checker)
@@ -2070,8 +2066,7 @@ insert_selected_messages(BalsaSendmsg *bsmsg, QuoteType type)
gtk_text_buffer_insert_at_cursor(buffer, body->str, body->len);
g_string_free(body, TRUE);
}
- g_list_foreach(l, (GFunc)g_object_unref, NULL);
- g_list_free(l);
+ g_list_free_full(l, g_object_unref);
}
}
@@ -2109,8 +2104,7 @@ sw_attach_messages_activated(GSimpleAction * action,
break;
}
}
- g_list_foreach(l, (GFunc)g_object_unref, NULL);
- g_list_free(l);
+ g_list_free_full(l, g_object_unref);
}
}
@@ -2217,12 +2211,12 @@ attachments_add(GtkWidget * widget,
} else if (target == g_intern_static_string("text/uri-list")) {
GSList *uri_list, *list;
- list = uri2gslist((gchar *) gtk_selection_data_get_data(selection_data));
- for (uri_list = list; uri_list != NULL; uri_list = uri_list->next) {
- add_attachment(bsmsg, uri_list->data, FALSE, NULL);
- g_free(uri_list->data);
+ uri_list = uri2gslist((gchar *) gtk_selection_data_get_data(selection_data));
+ for (list = uri_list; list != NULL; list = list->next) {
+ add_attachment(bsmsg, list->data, FALSE, NULL);
+ g_free(list->data);
}
- g_slist_free(list);
+ g_slist_free(uri_list);
} else if (target == g_intern_static_string("STRING") ||
target == g_intern_static_string("text/plain")) {
gchar *url = rfc2396_uri((gchar *) gtk_selection_data_get_data(selection_data));
@@ -2801,24 +2795,24 @@ drag_data_quote(GtkWidget * widget,
}
balsa_index_selected_msgnos_free(index, selected);
} else if (target == g_intern_static_string(drop_types[TARGET_URI_LIST])) {
- GSList *uri_list =
- uri2gslist((gchar *)
- gtk_selection_data_get_data(selection_data));
- for (; uri_list != NULL; uri_list = uri_list->next) {
+ GSList *uri_list, *list;
+
+ uri_list = uri2gslist((gchar *) gtk_selection_data_get_data(selection_data));
+ for (list = uri_list; list != NULL; list = list->next) {
/* Since current GtkTextView gets this signal twice for
* every action (#150141) we need to check for duplicates,
* which is a good idea anyway. */
has_file_attached_t find_file;
- find_file.name = uri_list->data;
+ find_file.name = list->data;
find_file.found = FALSE;
if (bsmsg->tree_view)
gtk_tree_model_foreach(BALSA_MSG_ATTACH_MODEL(bsmsg),
has_file_attached, &find_file);
if (!find_file.found)
- add_attachment(bsmsg, uri_list->data, FALSE, NULL);
+ add_attachment(bsmsg, list->data, FALSE, NULL);
+ g_free(list->data);
}
- g_slist_foreach(uri_list, (GFunc) g_free, NULL);
g_slist_free(uri_list);
}
@@ -6851,8 +6845,7 @@ sendmsg_window_reply_embedded(LibBalsaMessageBody *part,
in_reply_to, message_id);
fill_body_from_part(bsmsg, part->embhdrs, message_id, references,
part->parts, QUOTE_ALL);
- g_list_foreach(references, (GFunc) g_free, NULL);
- g_list_free(references);
+ g_list_free_full(references, g_free);
}
if (reply_type == SEND_REPLY_ALL)
diff --git a/src/store-address.c b/src/store-address.c
index 85f9091..6616cea 100644
--- a/src/store-address.c
+++ b/src/store-address.c
@@ -177,8 +177,7 @@ store_address_response(GtkWidget * dialog, gint response,
g_object_weak_unref(G_OBJECT(list->data),
(GWeakNotify) store_address_weak_notify, info);
}
- g_list_foreach(info->entries_list, (GFunc) g_free, NULL);
- g_list_free(info->entries_list);
+ g_list_free_full(info->entries_list, g_free);
store_address_free(info);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]