[evolution] I#1187 - code-cleanup: Remove unnecessary NULL pointer checks



commit d27a33e55d836a7b5de76ca47e40568a195c395b
Author: Markus Elfring <elfring users sourceforge net>
Date:   Wed Nov 4 10:25:44 2020 +0100

    I#1187 - code-cleanup: Remove unnecessary NULL pointer checks
    
    These changes were generated by using the software “Coccinelle 1.0.8”.
    
    Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/1187

 .../gui/contact-editor/e-contact-editor-fullname.c | 12 +---
 .../gui/contact-editor/e-contact-editor.c          | 11 +---
 .../contact-list-editor/e-contact-list-editor.c    | 11 +---
 .../gui/contact-list-editor/e-contact-list-model.c | 11 +---
 src/addressbook/gui/widgets/e-addressbook-model.c  |  5 +-
 .../gui/widgets/e-addressbook-reflow-adapter.c     |  5 +-
 .../gui/widgets/e-addressbook-selector.c           | 11 +---
 src/addressbook/gui/widgets/e-addressbook-view.c   | 38 +++---------
 .../gui/widgets/e-minicard-view-widget.c           | 16 +----
 src/addressbook/gui/widgets/e-minicard.c           | 17 +----
 src/addressbook/gui/widgets/eab-contact-display.c  |  6 +-
 src/addressbook/gui/widgets/eab-gui-util.c         |  6 +-
 src/calendar/gui/e-cal-list-view.c                 | 10 +--
 src/calendar/gui/e-cal-model.c                     |  8 +--
 src/calendar/gui/e-calendar-view.c                 | 11 +---
 src/calendar/gui/e-comp-editor-page-recurrence.c   |  5 +-
 src/calendar/gui/e-day-view-main-item.c            |  6 +-
 src/calendar/gui/e-day-view-time-item.c            |  6 +-
 src/calendar/gui/e-day-view-top-item.c             |  6 +-
 src/calendar/gui/e-day-view.c                      | 45 +++-----------
 src/calendar/gui/e-meeting-list-view.c             | 17 +----
 src/calendar/gui/e-meeting-time-sel-item.c         | 16 +----
 src/calendar/gui/e-meeting-utils.c                 | 10 +--
 src/calendar/gui/e-memo-table.c                    | 17 +----
 src/calendar/gui/e-task-table.c                    | 11 +---
 src/calendar/gui/e-to-do-pane.c                    |  5 +-
 src/calendar/gui/e-week-view-main-item.c           |  6 +-
 src/calendar/gui/e-week-view-titles-item.c         |  6 +-
 src/calendar/gui/e-week-view.c                     | 29 ++-------
 src/calendar/gui/ea-cal-view-event.c               |  5 +-
 src/calendar/gui/ea-cal-view.c                     |  6 +-
 src/composer/e-composer-header-table.c             | 15 +----
 src/composer/e-composer-header.c                   | 17 +----
 src/composer/e-composer-name-header.c              |  6 +-
 src/composer/e-composer-post-header.c              |  6 +-
 src/composer/e-composer-private.c                  | 59 +++---------------
 src/composer/e-msg-composer.c                      |  5 +-
 src/e-util/e-action-combo-box.c                    | 12 +---
 src/e-util/e-activity.c                            |  6 +-
 src/e-util/e-attachment-bar.c                      | 72 ++++------------------
 src/e-util/e-attachment-dialog.c                   | 30 ++-------
 src/e-util/e-attachment-paned.c                    | 53 +++-------------
 src/e-util/e-attachment-store.c                    | 23 ++-----
 src/e-util/e-attachment-view.c                     | 17 ++---
 src/e-util/e-attachment.c                          | 30 +++------
 src/e-util/e-book-source-config.c                  | 12 +---
 src/e-util/e-cal-source-config.c                   | 12 +---
 src/e-util/e-calendar-item.c                       | 29 ++-------
 src/e-util/e-canvas.c                              |  5 +-
 src/e-util/e-categories-selector.c                 |  6 +-
 src/e-util/e-cell-combo.c                          |  5 +-
 src/e-util/e-cell-date-edit.c                      |  5 +-
 src/e-util/e-cell-popup.c                          |  4 +-
 src/e-util/e-cell-text.c                           |  3 +-
 src/e-util/e-cell-toggle.c                         |  6 +-
 src/e-util/e-cell-tree.c                           |  4 +-
 src/e-util/e-charset-combo-box.c                   | 12 +---
 src/e-util/e-client-cache.c                        |  5 +-
 src/e-util/e-collection-account-wizard.c           | 23 ++-----
 src/e-util/e-color-combo.c                         | 18 +-----
 src/e-util/e-contact-store.c                       |  5 +-
 src/e-util/e-dateedit.c                            |  5 +-
 src/e-util/e-emoticon-tool-button.c                |  6 +-
 src/e-util/e-filter-input.c                        |  3 +-
 src/e-util/e-image-chooser.c                       | 12 +---
 src/e-util/e-import-assistant.c                    |  5 +-
 src/e-util/e-mail-signature-editor.c               | 29 ++-------
 src/e-util/e-mail-signature-manager.c              |  6 +-
 src/e-util/e-mail-signature-preview.c              |  6 +-
 src/e-util/e-mail-signature-script-dialog.c        | 12 +---
 src/e-util/e-map.c                                 |  5 +-
 src/e-util/e-misc-utils.c                          | 16 +----
 src/e-util/e-name-selector-dialog.c                | 10 +--
 src/e-util/e-name-selector-entry.c                 | 51 +++------------
 src/e-util/e-name-selector.c                       |  5 +-
 src/e-util/e-online-button.c                       |  5 +-
 src/e-util/e-photo-cache.c                         |  5 +-
 src/e-util/e-picture-gallery.c                     |  6 +-
 src/e-util/e-preferences-window.c                  |  5 +-
 src/e-util/e-reflow.c                              |  5 +-
 src/e-util/e-rule-editor.c                         |  5 +-
 src/e-util/e-search-bar.c                          | 41 +++---------
 src/e-util/e-selection-model-array.c               | 11 +---
 src/e-util/e-sorter-array.c                        |  5 +-
 src/e-util/e-source-config-dialog.c                |  6 +-
 src/e-util/e-source-config.c                       | 54 +++-------------
 src/e-util/e-spell-checker.c                       |  5 +-
 src/e-util/e-spell-entry.c                         |  5 +-
 src/e-util/e-table-click-to-add.c                  |  4 +-
 src/e-util/e-table-col.c                           | 10 +--
 src/e-util/e-table-config.c                        | 14 +----
 src/e-util/e-table-extras.c                        | 24 ++------
 src/e-util/e-table-field-chooser-dialog.c          | 14 +----
 src/e-util/e-table-field-chooser-item.c            | 13 +---
 src/e-util/e-table-field-chooser.c                 |  9 +--
 src/e-util/e-table-group-container.c               | 23 ++-----
 src/e-util/e-table-group-leaf.c                    | 10 +--
 src/e-util/e-table-group.c                         | 17 +----
 src/e-util/e-table-header-item.c                   | 24 ++------
 src/e-util/e-table-item.c                          | 12 +---
 src/e-util/e-table-selection-model.c               |  9 +--
 src/e-util/e-table-sorted-variable.c               |  9 +--
 src/e-util/e-table-sorted.c                        |  4 +-
 src/e-util/e-table.c                               | 35 ++---------
 src/e-util/e-text.c                                | 32 +++-------
 src/e-util/e-timezone-dialog.c                     | 16 +----
 src/e-util/e-tree.c                                | 28 ++-------
 src/e-util/e-web-view.c                            |  5 +-
 src/e-util/ea-cell-table.c                         | 14 ++---
 src/e-util/evolution-source-viewer.c               | 10 +--
 src/e-util/gal-a11y-e-cell-vbox.c                  |  3 +-
 src/e-util/gal-a11y-e-cell.c                       |  5 +-
 src/e-util/gal-a11y-e-table-column-header.c        |  5 +-
 src/e-util/gal-a11y-e-table-item.c                 | 11 +---
 src/e-util/gal-view-instance-save-as-dialog.c      |  4 +-
 src/e-util/test-keyfile-settings-backend.c         |  6 +-
 src/em-format/e-mail-part-list.c                   | 12 +---
 src/libemail-engine/e-mail-session.c               | 16 +----
 src/libemail-engine/e-mail-utils.c                 |  5 +-
 src/libemail-engine/mail-ops.c                     | 10 +--
 src/libemail-engine/mail-vfolder.c                 |  5 +-
 src/libgnomecanvas/gnome-canvas-pixbuf.c           |  5 +-
 src/libgnomecanvas/gnome-canvas-rect.c             |  6 +-
 src/libgnomecanvas/gnome-canvas-text.c             | 17 +----
 src/mail/e-mail-account-store.c                    |  5 +-
 src/mail/e-mail-config-assistant.c                 | 42 +++----------
 src/mail/e-mail-config-provider-page.c             |  6 +-
 src/mail/e-mail-config-security-page.c             |  6 +-
 src/mail/e-mail-config-service-backend.c           | 12 +---
 src/mail/e-mail-config-service-notebook.c          |  6 +-
 src/mail/e-mail-config-service-page.c              | 17 +----
 src/mail/e-mail-config-summary-page.c              | 16 +----
 src/mail/e-mail-config-window.c                    | 36 ++---------
 src/mail/e-mail-display.c                          | 12 +---
 src/mail/e-mail-folder-sort-order-dialog.c         | 16 +----
 src/mail/e-mail-junk-options.c                     | 11 +---
 src/mail/e-mail-label-dialog.c                     | 12 +---
 src/mail/e-mail-label-list-store.c                 |  5 +-
 src/mail/e-mail-label-manager.c                    | 24 ++------
 src/mail/e-mail-paned-view.c                       | 27 ++------
 src/mail/e-mail-templates-store.c                  | 11 +---
 src/mail/e-mail-ui-session.c                       | 22 ++-----
 src/mail/e-mail-view.c                             | 12 +---
 src/mail/em-filter-context.c                       |  6 +-
 src/mail/em-filter-editor-folder-element.c         |  5 +-
 src/mail/em-filter-source-element.c                |  6 +-
 src/mail/em-folder-selection-button.c              | 12 +---
 src/mail/em-folder-tree.c                          | 27 ++------
 src/mail/em-subscription-editor.c                  | 11 +---
 src/mail/em-vfolder-editor-context.c               |  5 +-
 src/mail/em-vfolder-editor-rule.c                  |  5 +-
 src/mail/importers/kmail-importer.c                |  6 +-
 src/mail/message-list.c                            | 31 +++-------
 src/modules/addressbook/e-book-shell-content.c     | 18 +-----
 src/modules/addressbook/e-book-shell-sidebar.c     |  6 +-
 .../book-config-ldap/evolution-book-config-ldap.c  |  5 +-
 .../evolution-cal-config-contacts.c                |  5 +-
 src/modules/calendar/e-cal-shell-view-private.c    |  5 +-
 src/modules/calendar/e-task-shell-view-private.c   |  5 +-
 src/modules/itip-formatter/itip-view.c             | 55 ++++++-----------
 .../mail-config/e-mail-config-google-summary.c     |  6 +-
 .../mail-config/e-mail-config-yahoo-summary.c      |  6 +-
 src/modules/mail/e-mail-shell-content.c            |  6 +-
 src/modules/mail/e-mail-shell-view.c               | 15 +----
 src/modules/mail/em-account-prefs.c                |  6 +-
 src/modules/mail/em-composer-prefs.c               |  5 +-
 .../e-mail-display-popup-prefer-plain.c            |  6 +-
 src/modules/prefer-plain/plugin/config-ui.c        |  5 +-
 src/modules/settings/e-settings-content-editor.c   |  6 +-
 .../settings/e-settings-name-selector-entry.c      |  6 +-
 .../e-mail-config-import-progress-page.c           |  6 +-
 src/modules/startup-wizard/e-startup-assistant.c   | 18 +-----
 src/modules/webkit-editor/e-webkit-editor.c        | 10 +--
 src/plugins/dbx-import/dbx-importer.c              |  3 +-
 .../email-custom-header/email-custom-header.c      | 17 +----
 src/plugins/mail-notification/mail-notification.c  | 15 ++---
 src/plugins/mail-to-task/mail-to-task.c            |  9 +--
 src/plugins/pst-import/pst-importer.c              | 20 ++----
 src/plugins/publish-calendar/publish-calendar.c    |  3 +-
 src/plugins/publish-calendar/url-editor-dialog.c   | 19 ++----
 src/plugins/save-calendar/save-calendar.c          |  9 +--
 src/shell/e-shell-backend.c                        |  6 +-
 src/shell/e-shell.c                                |  5 +-
 src/smime/gui/certificate-manager.c                | 37 +++--------
 184 files changed, 467 insertions(+), 1942 deletions(-)
---
diff --git a/src/addressbook/gui/contact-editor/e-contact-editor-fullname.c 
b/src/addressbook/gui/contact-editor/e-contact-editor-fullname.c
index e91c90c072..489f020e34 100644
--- a/src/addressbook/gui/contact-editor/e-contact-editor-fullname.c
+++ b/src/addressbook/gui/contact-editor/e-contact-editor-fullname.c
@@ -152,16 +152,8 @@ e_contact_editor_fullname_dispose (GObject *object)
        EContactEditorFullname *e_contact_editor_fullname;
 
        e_contact_editor_fullname = E_CONTACT_EDITOR_FULLNAME (object);
-
-       if (e_contact_editor_fullname->builder) {
-               g_object_unref (e_contact_editor_fullname->builder);
-               e_contact_editor_fullname->builder = NULL;
-       }
-
-       if (e_contact_editor_fullname->name) {
-               e_contact_name_free (e_contact_editor_fullname->name);
-               e_contact_editor_fullname->name = NULL;
-       }
+       g_clear_object (&e_contact_editor_fullname->builder);
+       g_clear_pointer (&e_contact_editor_fullname->name, e_contact_name_free);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_contact_editor_fullname_parent_class)->dispose (object);
diff --git a/src/addressbook/gui/contact-editor/e-contact-editor.c 
b/src/addressbook/gui/contact-editor/e-contact-editor.c
index 3d243594b9..6307d9f77e 100644
--- a/src/addressbook/gui/contact-editor/e-contact-editor.c
+++ b/src/addressbook/gui/contact-editor/e-contact-editor.c
@@ -5208,11 +5208,7 @@ e_contact_editor_dispose (GObject *object)
 {
        EContactEditor *e_contact_editor = E_CONTACT_EDITOR (object);
 
-       if (e_contact_editor->priv->image_selector) {
-               gtk_widget_destroy (e_contact_editor->priv->image_selector);
-               e_contact_editor->priv->image_selector = NULL;
-       }
-
+       g_clear_pointer (&e_contact_editor->priv->image_selector, gtk_widget_destroy);
        g_clear_object (&e_contact_editor->priv->image_selector_native);
 
        g_slist_free_full (
@@ -5231,10 +5227,7 @@ e_contact_editor_dispose (GObject *object)
                        e_contact_editor->priv->target_editable_id);
        }
 
-       if (e_contact_editor->priv->name) {
-               e_contact_name_free (e_contact_editor->priv->name);
-               e_contact_editor->priv->name = NULL;
-       }
+       g_clear_pointer (&e_contact_editor->priv->name, e_contact_name_free);
 
        if (e_contact_editor->priv->focus_tracker) {
                g_signal_handlers_disconnect_by_data (
diff --git a/src/addressbook/gui/contact-list-editor/e-contact-list-editor.c 
b/src/addressbook/gui/contact-list-editor/e-contact-list-editor.c
index 6ae264a947..04f2bdc0e6 100644
--- a/src/addressbook/gui/contact-list-editor/e-contact-list-editor.c
+++ b/src/addressbook/gui/contact-list-editor/e-contact-list-editor.c
@@ -1427,15 +1427,8 @@ contact_list_editor_dispose (GObject *object)
                priv->name_selector = NULL;
        }
 
-       if (priv->contact) {
-               g_object_unref (priv->contact);
-               priv->contact = NULL;
-       }
-
-       if (priv->builder) {
-               g_object_unref (priv->builder);
-               priv->builder = NULL;
-       }
+       g_clear_object (&priv->contact);
+       g_clear_object (&priv->builder);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_contact_list_editor_parent_class)->dispose (object);
diff --git a/src/addressbook/gui/contact-list-editor/e-contact-list-model.c 
b/src/addressbook/gui/contact-list-editor/e-contact-list-model.c
index 925d28be06..29b51cabb3 100644
--- a/src/addressbook/gui/contact-list-editor/e-contact-list-model.c
+++ b/src/addressbook/gui/contact-list-editor/e-contact-list-model.c
@@ -79,15 +79,8 @@ contact_list_model_dispose (GObject *object)
 {
        EContactListModelPrivate *priv = E_CONTACT_LIST_MODEL (object)->priv;
 
-       if (priv->uids_table) {
-               g_hash_table_destroy (priv->uids_table);
-               priv->uids_table = NULL;
-       }
-
-       if (priv->emails_table) {
-               g_hash_table_destroy (priv->emails_table);
-               priv->emails_table = NULL;
-       }
+       g_clear_pointer (&priv->uids_table, g_hash_table_destroy);
+       g_clear_pointer (&priv->emails_table, g_hash_table_destroy);
 
        G_OBJECT_CLASS (e_contact_list_model_parent_class)->dispose (object);
 }
diff --git a/src/addressbook/gui/widgets/e-addressbook-model.c 
b/src/addressbook/gui/widgets/e-addressbook-model.c
index 1153942db1..3b83cd16b2 100644
--- a/src/addressbook/gui/widgets/e-addressbook-model.c
+++ b/src/addressbook/gui/widgets/e-addressbook-model.c
@@ -560,10 +560,7 @@ addressbook_model_dispose (GObject *object)
        g_clear_object (&model->priv->client_cache);
        g_clear_object (&model->priv->book_client);
 
-       if (model->priv->query_str) {
-               g_free (model->priv->query_str);
-               model->priv->query_str = NULL;
-       }
+       g_clear_pointer (&model->priv->query_str, g_free);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_addressbook_model_parent_class)->dispose (object);
diff --git a/src/addressbook/gui/widgets/e-addressbook-reflow-adapter.c 
b/src/addressbook/gui/widgets/e-addressbook-reflow-adapter.c
index 220a1d4591..01363106d1 100644
--- a/src/addressbook/gui/widgets/e-addressbook-reflow-adapter.c
+++ b/src/addressbook/gui/widgets/e-addressbook-reflow-adapter.c
@@ -107,10 +107,7 @@ unlink_model (EAddressbookReflowAdapter *adapter)
        priv->search_result_id = 0;
        priv->notify_client_id = 0;
 
-       if (priv->model)
-               g_object_unref (priv->model);
-
-       priv->model = NULL;
+       g_clear_object (&priv->model);
 }
 
 static gint
diff --git a/src/addressbook/gui/widgets/e-addressbook-selector.c 
b/src/addressbook/gui/widgets/e-addressbook-selector.c
index 84f3a73536..8879fa01df 100644
--- a/src/addressbook/gui/widgets/e-addressbook-selector.c
+++ b/src/addressbook/gui/widgets/e-addressbook-selector.c
@@ -215,11 +215,7 @@ addressbook_selector_dispose (GObject *object)
        EAddressbookSelectorPrivate *priv;
 
        priv = E_ADDRESSBOOK_SELECTOR_GET_PRIVATE (object);
-
-       if (priv->current_view != NULL) {
-               g_object_unref (priv->current_view);
-               priv->current_view = NULL;
-       }
+       g_clear_object (&priv->current_view);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_addressbook_selector_parent_class)->dispose (object);
@@ -442,10 +438,7 @@ e_addressbook_selector_set_current_view (EAddressbookSelector *selector,
        if (selector->priv->current_view == current_view)
                return;
 
-       if (selector->priv->current_view != NULL) {
-               g_object_unref (selector->priv->current_view);
-               selector->priv->current_view = NULL;
-       }
+       g_clear_object (&selector->priv->current_view);
 
        if (current_view != NULL)
                g_object_ref (current_view);
diff --git a/src/addressbook/gui/widgets/e-addressbook-view.c 
b/src/addressbook/gui/widgets/e-addressbook-view.c
index 5ab36fdd23..206d7bda96 100644
--- a/src/addressbook/gui/widgets/e-addressbook-view.c
+++ b/src/addressbook/gui/widgets/e-addressbook-view.c
@@ -564,38 +564,16 @@ addressbook_view_dispose (GObject *object)
                priv->activity = NULL;
        }
 
-       if (priv->source != NULL) {
-               g_object_unref (priv->source);
-               priv->source = NULL;
-       }
-
-       if (priv->view_instance != NULL) {
-               g_object_unref (priv->view_instance);
-               priv->view_instance = NULL;
-       }
+       g_clear_object (&priv->source);
+       g_clear_object (&priv->view_instance);
 
        priv->filter_id = 0;
        priv->search_id = 0;
 
-       if (priv->search_text) {
-               g_free (priv->search_text);
-               priv->search_text = NULL;
-       }
-
-       if (priv->advanced_search) {
-               g_object_unref (priv->advanced_search);
-               priv->advanced_search = NULL;
-       }
-
-       if (priv->copy_target_list != NULL) {
-               gtk_target_list_unref (priv->copy_target_list);
-               priv->copy_target_list = NULL;
-       }
-
-       if (priv->paste_target_list != NULL) {
-               gtk_target_list_unref (priv->paste_target_list);
-               priv->paste_target_list = NULL;
-       }
+       g_clear_pointer (&priv->search_text, g_free);
+       g_clear_object (&priv->advanced_search);
+       g_clear_pointer (&priv->copy_target_list, gtk_target_list_unref);
+       g_clear_pointer (&priv->paste_target_list, gtk_target_list_unref);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_addressbook_view_parent_class)->dispose (object);
@@ -1642,9 +1620,7 @@ e_addressbook_view_set_search (EAddressbookView *view,
        g_return_if_fail (E_IS_ADDRESSBOOK_VIEW (view));
 
        priv = view->priv;
-
-       if (priv->search_text)
-               g_free (priv->search_text);
+       g_free (priv->search_text);
        if (priv->advanced_search)
                g_object_unref (priv->advanced_search);
 
diff --git a/src/addressbook/gui/widgets/e-minicard-view-widget.c 
b/src/addressbook/gui/widgets/e-minicard-view-widget.c
index 7ca5d93395..f5985e4b78 100644
--- a/src/addressbook/gui/widgets/e-minicard-view-widget.c
+++ b/src/addressbook/gui/widgets/e-minicard-view-widget.c
@@ -301,19 +301,9 @@ e_minicard_view_widget_dispose (GObject *object)
 {
        EMinicardViewWidget *view = E_MINICARD_VIEW_WIDGET (object);
 
-       if (view->book_client) {
-               g_object_unref (view->book_client);
-               view->book_client = NULL;
-       }
-       if (view->query) {
-               g_free (view->query);
-               view->query = NULL;
-       }
-
-       if (view->adapter) {
-               g_object_unref (view->adapter);
-               view->adapter = NULL;
-       }
+       g_clear_object (&view->book_client);
+       g_clear_pointer (&view->query, g_free);
+       g_clear_object (&view->adapter);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_minicard_view_widget_parent_class)->dispose (object);
diff --git a/src/addressbook/gui/widgets/e-minicard.c b/src/addressbook/gui/widgets/e-minicard.c
index e6127bca33..d765ce1434 100644
--- a/src/addressbook/gui/widgets/e-minicard.c
+++ b/src/addressbook/gui/widgets/e-minicard.c
@@ -432,10 +432,7 @@ e_minicard_dispose (GObject *object)
                e_minicard->fields = NULL;
        }
 
-       if (e_minicard->list_icon_pixbuf) {
-               g_object_unref (e_minicard->list_icon_pixbuf);
-               e_minicard->list_icon_pixbuf = NULL;
-       }
+       g_clear_object (&e_minicard->list_icon_pixbuf);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_minicard_parent_class)->dispose (object);
@@ -450,16 +447,8 @@ e_minicard_finalize (GObject *object)
        g_return_if_fail (E_IS_MINICARD (object));
 
        e_minicard = E_MINICARD (object);
-
-       if (e_minicard->contact) {
-               g_object_unref (e_minicard->contact);
-               e_minicard->contact = NULL;
-       }
-
-       if (e_minicard->list_icon_pixbuf) {
-               g_object_unref (e_minicard->list_icon_pixbuf);
-               e_minicard->list_icon_pixbuf = NULL;
-       }
+       g_clear_object (&e_minicard->contact);
+       g_clear_object (&e_minicard->list_icon_pixbuf);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_minicard_parent_class)->finalize (object);
diff --git a/src/addressbook/gui/widgets/eab-contact-display.c 
b/src/addressbook/gui/widgets/eab-contact-display.c
index db5eb1ea40..79e2664123 100644
--- a/src/addressbook/gui/widgets/eab-contact-display.c
+++ b/src/addressbook/gui/widgets/eab-contact-display.c
@@ -288,11 +288,7 @@ contact_display_dispose (GObject *object)
        EABContactDisplayPrivate *priv;
 
        priv = EAB_CONTACT_DISPLAY_GET_PRIVATE (object);
-
-       if (priv->contact != NULL) {
-               g_object_unref (priv->contact);
-               priv->contact = NULL;
-       }
+       g_clear_object (&priv->contact);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (eab_contact_display_parent_class)->dispose (object);
diff --git a/src/addressbook/gui/widgets/eab-gui-util.c b/src/addressbook/gui/widgets/eab-gui-util.c
index 9abeaf92ba..8698ccf4e4 100644
--- a/src/addressbook/gui/widgets/eab-gui-util.c
+++ b/src/addressbook/gui/widgets/eab-gui-util.c
@@ -815,8 +815,7 @@ get_address_format (AddressFormat address_format,
        }
 
        if (format) {
-               if (*format)
-                       g_free (*format);
+               g_free (*format);
                *format = get_key_file_locale_string (key_file, addr_key, loc);
                if (!*format && address_format == ADDRESS_FORMAT_HOME) {
                        *format = g_strdup (ADDRESS_DEFAULT_FORMAT);
@@ -825,8 +824,7 @@ get_address_format (AddressFormat address_format,
        }
 
        if (country_position) {
-               if (*country_position)
-                       g_free (*country_position);
+               g_free (*country_position);
                *country_position = get_key_file_locale_string (key_file, country_key, loc);
                if (!*country_position && address_format == ADDRESS_FORMAT_HOME)
                        *country_position = g_strdup (ADDRESS_DEFAULT_COUNTRY_POSITION);
diff --git a/src/calendar/gui/e-cal-list-view.c b/src/calendar/gui/e-cal-list-view.c
index c3e4a9d9fd..22430f4b9c 100644
--- a/src/calendar/gui/e-cal-list-view.c
+++ b/src/calendar/gui/e-cal-list-view.c
@@ -396,10 +396,7 @@ e_cal_list_view_dispose (GObject *object)
 
        cal_list_view = E_CAL_LIST_VIEW (object);
 
-       if (cal_list_view->priv->cursor_event) {
-               g_free (cal_list_view->priv->cursor_event);
-               cal_list_view->priv->cursor_event = NULL;
-       }
+       g_clear_pointer (&cal_list_view->priv->cursor_event, g_free);
 
        if (cal_list_view->priv->table) {
                gtk_widget_destroy (GTK_WIDGET (cal_list_view->priv->table));
@@ -595,10 +592,7 @@ e_cal_list_view_get_selected_events (ECalendarView *cal_view)
        GList *event_list = NULL;
        gint   cursor_row;
 
-       if (E_CAL_LIST_VIEW (cal_view)->priv->cursor_event) {
-               g_free (E_CAL_LIST_VIEW (cal_view)->priv->cursor_event);
-               E_CAL_LIST_VIEW (cal_view)->priv->cursor_event = NULL;
-       }
+       g_clear_pointer (&E_CAL_LIST_VIEW (cal_view)->priv->cursor_event, g_free);
 
        cursor_row = e_table_get_cursor_row (
                E_CAL_LIST_VIEW (cal_view)->priv->table);
diff --git a/src/calendar/gui/e-cal-model.c b/src/calendar/gui/e-cal-model.c
index b0ec598b2b..76857dd9d4 100644
--- a/src/calendar/gui/e-cal-model.c
+++ b/src/calendar/gui/e-cal-model.c
@@ -229,10 +229,7 @@ e_cal_model_component_finalize (GObject *object)
 {
        ECalModelComponent *comp_data = E_CAL_MODEL_COMPONENT (object);
 
-       if (comp_data->client) {
-               g_object_unref (comp_data->client);
-               comp_data->client = NULL;
-       }
+       g_clear_object (&comp_data->client);
 
        e_cal_model_component_set_icalcomponent (comp_data, NULL, NULL);
 
@@ -1748,8 +1745,7 @@ cal_model_free_value (ETableModel *etm,
        case E_CAL_MODEL_FIELD_DESCRIPTION :
        case E_CAL_MODEL_FIELD_SUMMARY :
        case E_CAL_MODEL_FIELD_SOURCE:
-               if (value)
-                       g_free (value);
+               g_free (value);
                break;
        case E_CAL_MODEL_FIELD_CLASSIFICATION :
        case E_CAL_MODEL_FIELD_HAS_ALARMS :
diff --git a/src/calendar/gui/e-calendar-view.c b/src/calendar/gui/e-calendar-view.c
index 472364d7a8..7d9e6e9e34 100644
--- a/src/calendar/gui/e-calendar-view.c
+++ b/src/calendar/gui/e-calendar-view.c
@@ -379,15 +379,8 @@ calendar_view_dispose (GObject *object)
                priv->model = NULL;
        }
 
-       if (priv->copy_target_list != NULL) {
-               gtk_target_list_unref (priv->copy_target_list);
-               priv->copy_target_list = NULL;
-       }
-
-       if (priv->paste_target_list != NULL) {
-               gtk_target_list_unref (priv->paste_target_list);
-               priv->paste_target_list = NULL;
-       }
+       g_clear_pointer (&priv->copy_target_list, gtk_target_list_unref);
+       g_clear_pointer (&priv->paste_target_list, gtk_target_list_unref);
 
        if (priv->selected_cut_list) {
                g_slist_foreach (priv->selected_cut_list, (GFunc) g_object_unref, NULL);
diff --git a/src/calendar/gui/e-comp-editor-page-recurrence.c 
b/src/calendar/gui/e-comp-editor-page-recurrence.c
index 9b7c3c413a..8e4ada285a 100644
--- a/src/calendar/gui/e-comp-editor-page-recurrence.c
+++ b/src/calendar/gui/e-comp-editor-page-recurrence.c
@@ -949,10 +949,7 @@ ecep_recurrence_make_recurrence_special (ECompEditorPageRecurrence *page_recurre
 
        g_return_if_fail (E_IS_COMP_EDITOR_PAGE_RECURRENCE (page_recurrence));
 
-       if (page_recurrence->priv->month_num_combo != NULL) {
-               gtk_widget_destroy (page_recurrence->priv->month_num_combo);
-               page_recurrence->priv->month_num_combo = NULL;
-       }
+       g_clear_pointer (&page_recurrence->priv->month_num_combo, gtk_widget_destroy);
 
        child = ecep_recurrence_get_box_first_child (page_recurrence->priv->recr_interval_special_box);
        if (child != NULL) {
diff --git a/src/calendar/gui/e-day-view-main-item.c b/src/calendar/gui/e-day-view-main-item.c
index d36c04cd19..15b86d65fd 100644
--- a/src/calendar/gui/e-day-view-main-item.c
+++ b/src/calendar/gui/e-day-view-main-item.c
@@ -976,11 +976,7 @@ day_view_main_item_dispose (GObject *object)
        EDayViewMainItemPrivate *priv;
 
        priv = E_DAY_VIEW_MAIN_ITEM_GET_PRIVATE (object);
-
-       if (priv->day_view != NULL) {
-               g_object_unref (priv->day_view);
-               priv->day_view = NULL;
-       }
+       g_clear_object (&priv->day_view);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_day_view_main_item_parent_class)->dispose (object);
diff --git a/src/calendar/gui/e-day-view-time-item.c b/src/calendar/gui/e-day-view-time-item.c
index 83d7efc3a2..60e2d2ec68 100644
--- a/src/calendar/gui/e-day-view-time-item.c
+++ b/src/calendar/gui/e-day-view-time-item.c
@@ -161,11 +161,7 @@ day_view_time_item_dispose (GObject *object)
        EDayViewTimeItemPrivate *priv;
 
        priv = E_DAY_VIEW_TIME_ITEM_GET_PRIVATE (object);
-
-       if (priv->day_view != NULL) {
-               g_object_unref (priv->day_view);
-               priv->day_view = NULL;
-       }
+       g_clear_object (&priv->day_view);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_day_view_time_item_parent_class)->dispose (object);
diff --git a/src/calendar/gui/e-day-view-top-item.c b/src/calendar/gui/e-day-view-top-item.c
index 42bdb40846..b545df82a2 100644
--- a/src/calendar/gui/e-day-view-top-item.c
+++ b/src/calendar/gui/e-day-view-top-item.c
@@ -539,11 +539,7 @@ day_view_top_item_dispose (GObject *object)
        EDayViewTopItemPrivate *priv;
 
        priv = E_DAY_VIEW_TOP_ITEM_GET_PRIVATE (object);
-
-       if (priv->day_view != NULL) {
-               g_object_unref (priv->day_view);
-               priv->day_view = NULL;
-       }
+       g_clear_object (&priv->day_view);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_day_view_top_item_parent_class)->dispose (object);
diff --git a/src/calendar/gui/e-day-view.c b/src/calendar/gui/e-day-view.c
index 543a163262..2daae20f93 100644
--- a/src/calendar/gui/e-day-view.c
+++ b/src/calendar/gui/e-day-view.c
@@ -970,32 +970,12 @@ day_view_dispose (GObject *object)
 
        e_day_view_stop_auto_scroll (day_view);
 
-       if (day_view->large_font_desc) {
-               pango_font_description_free (day_view->large_font_desc);
-               day_view->large_font_desc = NULL;
-       }
-
-       if (day_view->small_font_desc) {
-               pango_font_description_free (day_view->small_font_desc);
-               day_view->small_font_desc = NULL;
-       }
-
-       if (day_view->normal_cursor) {
-               g_object_unref (day_view->normal_cursor);
-               day_view->normal_cursor = NULL;
-       }
-       if (day_view->move_cursor) {
-               g_object_unref (day_view->move_cursor);
-               day_view->move_cursor = NULL;
-       }
-       if (day_view->resize_width_cursor) {
-               g_object_unref (day_view->resize_width_cursor);
-               day_view->resize_width_cursor = NULL;
-       }
-       if (day_view->resize_height_cursor) {
-               g_object_unref (day_view->resize_height_cursor);
-               day_view->resize_height_cursor = NULL;
-       }
+       g_clear_pointer (&day_view->large_font_desc, pango_font_description_free);
+       g_clear_pointer (&day_view->small_font_desc, pango_font_description_free);
+       g_clear_object (&day_view->normal_cursor);
+       g_clear_object (&day_view->move_cursor);
+       g_clear_object (&day_view->resize_width_cursor);
+       g_clear_object (&day_view->resize_height_cursor);
 
        if (day_view->long_events) {
                e_day_view_free_events (day_view);
@@ -5609,10 +5589,7 @@ e_day_view_finish_resize (EDayView *day_view)
 
        e_cal_component_commit_sequence (comp);
 
-       if (day_view->last_edited_comp_string != NULL) {
-               g_free (day_view->last_edited_comp_string);
-               day_view->last_edited_comp_string = NULL;
-       }
+       g_clear_pointer (&day_view->last_edited_comp_string, g_free);
 
        day_view->last_edited_comp_string = e_cal_component_get_as_string (comp);
 
@@ -7278,8 +7255,7 @@ e_day_view_start_editing_event (EDayView *day_view,
                                event->canvas_item,
                                "text", initial_text,
                                NULL);
-                       if (initial_text)
-                               g_free (initial_text);
+                       g_free (initial_text);
                }
        }
 
@@ -7744,10 +7720,7 @@ e_day_view_change_event_time (EDayView *day_view,
 
        e_cal_component_commit_sequence (comp);
 
-       if (day_view->last_edited_comp_string != NULL) {
-               g_free (day_view->last_edited_comp_string);
-               day_view->last_edited_comp_string = NULL;
-       }
+       g_clear_pointer (&day_view->last_edited_comp_string, g_free);
 
        day_view->last_edited_comp_string = e_cal_component_get_as_string (comp);
 
diff --git a/src/calendar/gui/e-meeting-list-view.c b/src/calendar/gui/e-meeting-list-view.c
index aed23367f6..202f14bdb8 100644
--- a/src/calendar/gui/e-meeting-list-view.c
+++ b/src/calendar/gui/e-meeting-list-view.c
@@ -86,10 +86,7 @@ e_meeting_list_view_finalize (GObject *object)
                priv->name_selector = NULL;
        }
 
-       if (priv->renderers) {
-               g_hash_table_destroy (priv->renderers);
-               priv->renderers = NULL;
-       }
+       g_clear_pointer (&priv->renderers, g_hash_table_destroy);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_meeting_list_view_parent_class)->finalize (object);
@@ -1021,11 +1018,7 @@ process_section (EMeetingListView *view,
                        g_free (email_addr);
                }
 
-               if (des) {
-                       g_object_unref (des);
-                       des = NULL;
-               }
-
+               g_clear_object (&des);
        }
 }
 
@@ -1136,11 +1129,7 @@ e_meeting_list_view_set_name_selector (EMeetingListView *lview,
        g_return_if_fail (E_IS_MEETING_LIST_VIEW (lview));
 
        priv = lview->priv;
-
-       if (priv->name_selector) {
-               g_object_unref (priv->name_selector);
-               priv->name_selector = NULL;
-       }
+       g_clear_object (&priv->name_selector);
 
        priv->name_selector = g_object_ref (name_selector);
 }
diff --git a/src/calendar/gui/e-meeting-time-sel-item.c b/src/calendar/gui/e-meeting-time-sel-item.c
index c10be092fd..d27e894df7 100644
--- a/src/calendar/gui/e-meeting-time-sel-item.c
+++ b/src/calendar/gui/e-meeting-time-sel-item.c
@@ -143,19 +143,9 @@ e_meeting_time_selector_item_dispose (GObject *object)
        EMeetingTimeSelectorItem *mts_item;
 
        mts_item = E_MEETING_TIME_SELECTOR_ITEM (object);
-
-       if (mts_item->normal_cursor) {
-               g_object_unref (mts_item->normal_cursor);
-               mts_item->normal_cursor = NULL;
-       }
-       if (mts_item->resize_cursor) {
-               g_object_unref (mts_item->resize_cursor);
-               mts_item->resize_cursor = NULL;
-       }
-       if (mts_item->busy_cursor) {
-               g_object_unref (mts_item->busy_cursor);
-               mts_item->busy_cursor = NULL;
-       }
+       g_clear_object (&mts_item->normal_cursor);
+       g_clear_object (&mts_item->resize_cursor);
+       g_clear_object (&mts_item->busy_cursor);
 
        G_OBJECT_CLASS (e_meeting_time_selector_item_parent_class)->dispose (object);
 }
diff --git a/src/calendar/gui/e-meeting-utils.c b/src/calendar/gui/e-meeting-utils.c
index 8b9678e6b0..d2480395cd 100644
--- a/src/calendar/gui/e-meeting-utils.c
+++ b/src/calendar/gui/e-meeting-utils.c
@@ -82,14 +82,8 @@ e_meeting_xfb_data_clear (EMeetingXfbData *xfb)
         * but not the xfb structure itself
         */
 
-       if (xfb->summary != NULL) {
-               g_free (xfb->summary);
-               xfb->summary = NULL;
-       }
-       if (xfb->location != NULL) {
-               g_free (xfb->location);
-               xfb->location = NULL;
-       }
+       g_clear_pointer (&xfb->summary, g_free);
+       g_clear_pointer (&xfb->location, g_free);
 }
 
 /* Creates an XFB string from a string property of a vfreebusy
diff --git a/src/calendar/gui/e-memo-table.c b/src/calendar/gui/e-memo-table.c
index 67a8d85704..042c0598e0 100644
--- a/src/calendar/gui/e-memo-table.c
+++ b/src/calendar/gui/e-memo-table.c
@@ -294,20 +294,9 @@ memo_table_dispose (GObject *object)
                priv->shell_view = NULL;
        }
 
-       if (priv->model != NULL) {
-               g_object_unref (priv->model);
-               priv->model = NULL;
-       }
-
-       if (priv->copy_target_list != NULL) {
-               gtk_target_list_unref (priv->copy_target_list);
-               priv->copy_target_list = NULL;
-       }
-
-       if (priv->paste_target_list != NULL) {
-               gtk_target_list_unref (priv->paste_target_list);
-               priv->paste_target_list = NULL;
-       }
+       g_clear_object (&priv->model);
+       g_clear_pointer (&priv->copy_target_list, gtk_target_list_unref);
+       g_clear_pointer (&priv->paste_target_list, gtk_target_list_unref);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_memo_table_parent_class)->dispose (object);
diff --git a/src/calendar/gui/e-task-table.c b/src/calendar/gui/e-task-table.c
index 88e946b178..a6fda0bd91 100644
--- a/src/calendar/gui/e-task-table.c
+++ b/src/calendar/gui/e-task-table.c
@@ -330,15 +330,8 @@ task_table_dispose (GObject *object)
                priv->model = NULL;
        }
 
-       if (priv->copy_target_list != NULL) {
-               gtk_target_list_unref (priv->copy_target_list);
-               priv->copy_target_list = NULL;
-       }
-
-       if (priv->paste_target_list != NULL) {
-               gtk_target_list_unref (priv->paste_target_list);
-               priv->paste_target_list = NULL;
-       }
+       g_clear_pointer (&priv->copy_target_list, gtk_target_list_unref);
+       g_clear_pointer (&priv->paste_target_list, gtk_target_list_unref);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_task_table_parent_class)->dispose (object);
diff --git a/src/calendar/gui/e-to-do-pane.c b/src/calendar/gui/e-to-do-pane.c
index 4681de06c0..6eee939471 100644
--- a/src/calendar/gui/e-to-do-pane.c
+++ b/src/calendar/gui/e-to-do-pane.c
@@ -2972,10 +2972,7 @@ e_to_do_pane_set_overdue_color (EToDoPane *to_do_pane,
             gdk_rgba_equal (to_do_pane->priv->overdue_color, overdue_color)))
                return;
 
-       if (to_do_pane->priv->overdue_color) {
-               gdk_rgba_free (to_do_pane->priv->overdue_color);
-               to_do_pane->priv->overdue_color = NULL;
-       }
+       g_clear_pointer (&to_do_pane->priv->overdue_color, gdk_rgba_free);
 
        if (overdue_color)
                to_do_pane->priv->overdue_color = gdk_rgba_copy (overdue_color);
diff --git a/src/calendar/gui/e-week-view-main-item.c b/src/calendar/gui/e-week-view-main-item.c
index 22f1b770ab..5b2fd9d7d6 100644
--- a/src/calendar/gui/e-week-view-main-item.c
+++ b/src/calendar/gui/e-week-view-main-item.c
@@ -325,11 +325,7 @@ week_view_main_item_dispose (GObject *object)
        EWeekViewMainItemPrivate *priv;
 
        priv = E_WEEK_VIEW_MAIN_ITEM_GET_PRIVATE (object);
-
-       if (priv->week_view != NULL) {
-               g_object_unref (priv->week_view);
-               priv->week_view = NULL;
-       }
+       g_clear_object (&priv->week_view);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_week_view_main_item_parent_class)->dispose (object);
diff --git a/src/calendar/gui/e-week-view-titles-item.c b/src/calendar/gui/e-week-view-titles-item.c
index 10efab2707..541d57222d 100644
--- a/src/calendar/gui/e-week-view-titles-item.c
+++ b/src/calendar/gui/e-week-view-titles-item.c
@@ -85,11 +85,7 @@ week_view_titles_item_dispose (GObject *object)
        EWeekViewTitlesItemPrivate *priv;
 
        priv = E_WEEK_VIEW_TITLES_ITEM_GET_PRIVATE (object);
-
-       if (priv->week_view != NULL) {
-               g_object_unref (priv->week_view);
-               priv->week_view = NULL;
-       }
+       g_clear_object (&priv->week_view);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_week_view_titles_item_parent_class)->dispose (object);
diff --git a/src/calendar/gui/e-week-view.c b/src/calendar/gui/e-week-view.c
index 514b0cc9bd..a31f0a982d 100644
--- a/src/calendar/gui/e-week-view.c
+++ b/src/calendar/gui/e-week-view.c
@@ -866,23 +866,10 @@ week_view_dispose (GObject *object)
                week_view->events = NULL;
        }
 
-       if (week_view->small_font_desc) {
-               pango_font_description_free (week_view->small_font_desc);
-               week_view->small_font_desc = NULL;
-       }
-
-       if (week_view->normal_cursor) {
-               g_object_unref (week_view->normal_cursor);
-               week_view->normal_cursor = NULL;
-       }
-       if (week_view->move_cursor) {
-               g_object_unref (week_view->move_cursor);
-               week_view->move_cursor = NULL;
-       }
-       if (week_view->resize_width_cursor) {
-               g_object_unref (week_view->resize_width_cursor);
-               week_view->resize_width_cursor = NULL;
-       }
+       g_clear_pointer (&week_view->small_font_desc, pango_font_description_free);
+       g_clear_object (&week_view->normal_cursor);
+       g_clear_object (&week_view->move_cursor);
+       g_clear_object (&week_view->resize_width_cursor);
 
        calendar_config_remove_notification (
                month_scroll_by_week_changed_cb, week_view);
@@ -4599,10 +4586,7 @@ e_week_view_change_event_time (EWeekView *week_view,
 
        e_cal_component_commit_sequence (comp);
 
-       if (week_view->last_edited_comp_string != NULL) {
-               g_free (week_view->last_edited_comp_string);
-               week_view->last_edited_comp_string = NULL;
-       }
+       g_clear_pointer (&week_view->last_edited_comp_string, g_free);
 
        week_view->last_edited_comp_string = e_cal_component_get_as_string (comp);
 
@@ -5123,8 +5107,7 @@ e_week_view_do_key_press (GtkWidget *widget,
 
        e_week_view_add_new_event_in_selected_range (week_view, initial_text, FALSE);
 
-       if (initial_text)
-               g_free (initial_text);
+       g_free (initial_text);
 
        return TRUE;
 }
diff --git a/src/calendar/gui/ea-cal-view-event.c b/src/calendar/gui/ea-cal-view-event.c
index 29529b949e..ce3cab3c9f 100644
--- a/src/calendar/gui/ea-cal-view-event.c
+++ b/src/calendar/gui/ea-cal-view-event.c
@@ -194,10 +194,7 @@ ea_cal_view_event_dispose (GObject *object)
 {
        EaCalViewEvent *a11y = EA_CAL_VIEW_EVENT (object);
 
-       if (a11y->state_set) {
-               g_object_unref (a11y->state_set);
-               a11y->state_set = NULL;
-       }
+       g_clear_object (&a11y->state_set);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (ea_cal_view_event_parent_class)->dispose (object);
diff --git a/src/calendar/gui/ea-cal-view.c b/src/calendar/gui/ea-cal-view.c
index fea65a42b9..71a63e0593 100644
--- a/src/calendar/gui/ea-cal-view.c
+++ b/src/calendar/gui/ea-cal-view.c
@@ -249,11 +249,7 @@ idle_dates_changed (gpointer data)
        g_return_val_if_fail (EA_IS_CAL_VIEW (data), FALSE);
 
        ea_cal_view = ATK_OBJECT (data);
-
-       if (ea_cal_view->name) {
-               g_free (ea_cal_view->name);
-               ea_cal_view->name = NULL;
-       }
+       g_clear_pointer (&ea_cal_view->name, g_free);
        g_object_notify (G_OBJECT (ea_cal_view), "accessible-name");
        g_signal_emit_by_name (ea_cal_view, "visible_data_changed");
        g_signal_emit_by_name (ea_cal_view, "children_changed", NULL, NULL, NULL);
diff --git a/src/composer/e-composer-header-table.c b/src/composer/e-composer-header-table.c
index 70b67b3b97..951994c323 100644
--- a/src/composer/e-composer-header-table.c
+++ b/src/composer/e-composer-header-table.c
@@ -784,16 +784,10 @@ composer_header_table_dispose (GObject *object)
        priv = E_COMPOSER_HEADER_TABLE_GET_PRIVATE (object);
 
        for (ii = 0; ii < G_N_ELEMENTS (priv->headers); ii++) {
-               if (priv->headers[ii] != NULL) {
-                       g_object_unref (priv->headers[ii]);
-                       priv->headers[ii] = NULL;
-               }
+               g_clear_object (&priv->headers[ii]);
        }
 
-       if (priv->signature_combo_box != NULL) {
-               g_object_unref (priv->signature_combo_box);
-               priv->signature_combo_box = NULL;
-       }
+       g_clear_object (&priv->signature_combo_box);
 
        if (priv->name_selector != NULL) {
                e_name_selector_cancel_loading (priv->name_selector);
@@ -801,10 +795,7 @@ composer_header_table_dispose (GObject *object)
                priv->name_selector = NULL;
        }
 
-       if (priv->client_cache != NULL) {
-               g_object_unref (priv->client_cache);
-               priv->client_cache = NULL;
-       }
+       g_clear_object (&priv->client_cache);
 
        g_free (priv->previous_from_uid);
        priv->previous_from_uid = NULL;
diff --git a/src/composer/e-composer-header.c b/src/composer/e-composer-header.c
index ab0878de04..a63714a6ec 100644
--- a/src/composer/e-composer-header.c
+++ b/src/composer/e-composer-header.c
@@ -170,20 +170,9 @@ composer_header_dispose (GObject *object)
 {
        EComposerHeader *header = E_COMPOSER_HEADER (object);
 
-       if (header->title_widget != NULL) {
-               g_object_unref (header->title_widget);
-               header->title_widget = NULL;
-       }
-
-       if (header->input_widget != NULL) {
-               g_object_unref (header->input_widget);
-               header->input_widget = NULL;
-       }
-
-       if (header->priv->registry != NULL) {
-               g_object_unref (header->priv->registry);
-               header->priv->registry = NULL;
-       }
+       g_clear_object (&header->title_widget);
+       g_clear_object (&header->input_widget);
+       g_clear_object (&header->priv->registry);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_composer_header_parent_class)->dispose (object);
diff --git a/src/composer/e-composer-name-header.c b/src/composer/e-composer-name-header.c
index 700007cd8d..1bf7dd4370 100644
--- a/src/composer/e-composer-name-header.c
+++ b/src/composer/e-composer-name-header.c
@@ -173,11 +173,7 @@ composer_name_header_dispose (GObject *object)
        EComposerNameHeaderPrivate *priv;
 
        priv = E_COMPOSER_NAME_HEADER_GET_PRIVATE (object);
-
-       if (priv->name_selector != NULL) {
-               g_object_unref (priv->name_selector);
-               priv->name_selector = NULL;
-       }
+       g_clear_object (&priv->name_selector);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_composer_name_header_parent_class)->dispose (object);
diff --git a/src/composer/e-composer-post-header.c b/src/composer/e-composer-post-header.c
index e7f53b01d1..8d81192bbe 100644
--- a/src/composer/e-composer-post-header.c
+++ b/src/composer/e-composer-post-header.c
@@ -146,11 +146,7 @@ composer_post_header_dispose (GObject *object)
        EComposerPostHeaderPrivate *priv;
 
        priv = E_COMPOSER_POST_HEADER_GET_PRIVATE (object);
-
-       if (priv->mail_account != NULL) {
-               g_object_unref (priv->mail_account);
-               priv->mail_account = NULL;
-       }
+       g_clear_object (&priv->mail_account);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_composer_post_header_parent_class)->dispose (object);
diff --git a/src/composer/e-composer-private.c b/src/composer/e-composer-private.c
index 77d1ca7918..f23b1d9b8f 100644
--- a/src/composer/e-composer-private.c
+++ b/src/composer/e-composer-private.c
@@ -484,55 +484,16 @@ e_composer_private_dispose (EMsgComposer *composer)
                composer->priv->shell = NULL;
        }
 
-       if (composer->priv->editor != NULL) {
-               g_object_unref (composer->priv->editor);
-               composer->priv->editor = NULL;
-       }
-
-       if (composer->priv->header_table != NULL) {
-               g_object_unref (composer->priv->header_table);
-               composer->priv->header_table = NULL;
-       }
-
-       if (composer->priv->attachment_paned != NULL) {
-               g_object_unref (composer->priv->attachment_paned);
-               composer->priv->attachment_paned = NULL;
-       }
-
-       if (composer->priv->focus_tracker != NULL) {
-               g_object_unref (composer->priv->focus_tracker);
-               composer->priv->focus_tracker = NULL;
-       }
-
-       if (composer->priv->window_group != NULL) {
-               g_object_unref (composer->priv->window_group);
-               composer->priv->window_group = NULL;
-       }
-
-       if (composer->priv->async_actions != NULL) {
-               g_object_unref (composer->priv->async_actions);
-               composer->priv->async_actions = NULL;
-       }
-
-       if (composer->priv->charset_actions != NULL) {
-               g_object_unref (composer->priv->charset_actions);
-               composer->priv->charset_actions = NULL;
-       }
-
-       if (composer->priv->composer_actions != NULL) {
-               g_object_unref (composer->priv->composer_actions);
-               composer->priv->composer_actions = NULL;
-       }
-
-       if (composer->priv->gallery_scrolled_window != NULL) {
-               g_object_unref (composer->priv->gallery_scrolled_window);
-               composer->priv->gallery_scrolled_window = NULL;
-       }
-
-       if (composer->priv->redirect != NULL) {
-               g_object_unref (composer->priv->redirect);
-               composer->priv->redirect = NULL;
-       }
+       g_clear_object (&composer->priv->editor);
+       g_clear_object (&composer->priv->header_table);
+       g_clear_object (&composer->priv->attachment_paned);
+       g_clear_object (&composer->priv->focus_tracker);
+       g_clear_object (&composer->priv->window_group);
+       g_clear_object (&composer->priv->async_actions);
+       g_clear_object (&composer->priv->charset_actions);
+       g_clear_object (&composer->priv->composer_actions);
+       g_clear_object (&composer->priv->gallery_scrolled_window);
+       g_clear_object (&composer->priv->redirect);
 }
 
 void
diff --git a/src/composer/e-msg-composer.c b/src/composer/e-msg-composer.c
index 5138ba96a8..3de481050d 100644
--- a/src/composer/e-msg-composer.c
+++ b/src/composer/e-msg-composer.c
@@ -2636,10 +2636,7 @@ msg_composer_dispose (GObject *object)
        EMsgComposerPrivate *priv = E_MSG_COMPOSER_GET_PRIVATE (composer);
        EShell *shell;
 
-       if (priv->address_dialog != NULL) {
-               gtk_widget_destroy (priv->address_dialog);
-               priv->address_dialog = NULL;
-       }
+       g_clear_pointer (&priv->address_dialog, gtk_widget_destroy);
 
        /* FIXME Our EShell is already unreferenced. */
        shell = e_shell_get_default ();
diff --git a/src/e-util/e-action-combo-box.c b/src/e-util/e-action-combo-box.c
index 8e0cf83719..13381c0817 100644
--- a/src/e-util/e-action-combo-box.c
+++ b/src/e-util/e-action-combo-box.c
@@ -350,16 +350,8 @@ action_combo_box_dispose (GObject *object)
 {
        EActionComboBoxPrivate *priv = E_ACTION_COMBO_BOX_GET_PRIVATE (object);
 
-       if (priv->action != NULL) {
-               g_object_unref (priv->action);
-               priv->action = NULL;
-       }
-
-       if (priv->action_group != NULL) {
-               g_object_unref (priv->action_group);
-               priv->action_group = NULL;
-       }
-
+       g_clear_object (&priv->action);
+       g_clear_object (&priv->action_group);
        g_hash_table_remove_all (priv->index);
 
        /* Chain up to parent's dispose() method. */
diff --git a/src/e-util/e-activity.c b/src/e-util/e-activity.c
index 1ffc354bed..f478111a02 100644
--- a/src/e-util/e-activity.c
+++ b/src/e-util/e-activity.c
@@ -185,11 +185,7 @@ activity_dispose (GObject *object)
        EActivityPrivate *priv;
 
        priv = E_ACTIVITY_GET_PRIVATE (object);
-
-       if (priv->alert_sink != NULL) {
-               g_object_unref (priv->alert_sink);
-               priv->alert_sink = NULL;
-       }
+       g_clear_object (&priv->alert_sink);
 
        if (priv->cancellable != NULL) {
                g_signal_handlers_disconnect_matched (
diff --git a/src/e-util/e-attachment-bar.c b/src/e-util/e-attachment-bar.c
index b2df0fd8c4..51631aedfc 100644
--- a/src/e-util/e-attachment-bar.c
+++ b/src/e-util/e-attachment-bar.c
@@ -274,66 +274,18 @@ attachment_bar_dispose (GObject *object)
        EAttachmentBarPrivate *priv;
 
        priv = E_ATTACHMENT_BAR_GET_PRIVATE (object);
-
-       if (priv->model != NULL) {
-               g_object_unref (priv->model);
-               priv->model = NULL;
-       }
-
-       if (priv->vbox != NULL) {
-               g_object_unref (priv->vbox);
-               priv->vbox = NULL;
-       }
-
-       if (priv->expander != NULL) {
-               g_object_unref (priv->expander);
-               priv->expander = NULL;
-       }
-
-       if (priv->combo_box != NULL) {
-               g_object_unref (priv->combo_box);
-               priv->combo_box = NULL;
-       }
-
-       if (priv->icon_view != NULL) {
-               g_object_unref (priv->icon_view);
-               priv->icon_view = NULL;
-       }
-
-       if (priv->tree_view != NULL) {
-               g_object_unref (priv->tree_view);
-               priv->tree_view = NULL;
-       }
-
-       if (priv->icon_frame != NULL) {
-               g_object_unref (priv->icon_frame);
-               priv->icon_frame = NULL;
-       }
-
-       if (priv->tree_frame != NULL) {
-               g_object_unref (priv->tree_frame);
-               priv->tree_frame = NULL;
-       }
-
-       if (priv->status_icon != NULL) {
-               g_object_unref (priv->status_icon);
-               priv->status_icon = NULL;
-       }
-
-       if (priv->status_label != NULL) {
-               g_object_unref (priv->status_label);
-               priv->status_label = NULL;
-       }
-
-       if (priv->save_all_button != NULL) {
-               g_object_unref (priv->save_all_button);
-               priv->save_all_button = NULL;
-       }
-
-       if (priv->save_one_button != NULL) {
-               g_object_unref (priv->save_one_button);
-               priv->save_one_button = NULL;
-       }
+       g_clear_object (&priv->model);
+       g_clear_object (&priv->vbox);
+       g_clear_object (&priv->expander);
+       g_clear_object (&priv->combo_box);
+       g_clear_object (&priv->icon_view);
+       g_clear_object (&priv->tree_view);
+       g_clear_object (&priv->icon_frame);
+       g_clear_object (&priv->tree_frame);
+       g_clear_object (&priv->status_icon);
+       g_clear_object (&priv->status_label);
+       g_clear_object (&priv->save_all_button);
+       g_clear_object (&priv->save_one_button);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_attachment_bar_parent_class)->dispose (object);
diff --git a/src/e-util/e-attachment-dialog.c b/src/e-util/e-attachment-dialog.c
index e34e8d251f..e2b53af28d 100644
--- a/src/e-util/e-attachment-dialog.c
+++ b/src/e-util/e-attachment-dialog.c
@@ -164,31 +164,11 @@ attachment_dialog_dispose (GObject *object)
        EAttachmentDialogPrivate *priv;
 
        priv = E_ATTACHMENT_DIALOG_GET_PRIVATE (object);
-
-       if (priv->attachment != NULL) {
-               g_object_unref (priv->attachment);
-               priv->attachment = NULL;
-       }
-
-       if (priv->display_name_entry != NULL) {
-               g_object_unref (priv->display_name_entry);
-               priv->display_name_entry = NULL;
-       }
-
-       if (priv->description_entry != NULL) {
-               g_object_unref (priv->description_entry);
-               priv->description_entry = NULL;
-       }
-
-       if (priv->content_type_label != NULL) {
-               g_object_unref (priv->content_type_label);
-               priv->content_type_label = NULL;
-       }
-
-       if (priv->disposition_checkbox != NULL) {
-               g_object_unref (priv->disposition_checkbox);
-               priv->disposition_checkbox = NULL;
-       }
+       g_clear_object (&priv->attachment);
+       g_clear_object (&priv->display_name_entry);
+       g_clear_object (&priv->description_entry);
+       g_clear_object (&priv->content_type_label);
+       g_clear_object (&priv->disposition_checkbox);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_attachment_dialog_parent_class)->dispose (object);
diff --git a/src/e-util/e-attachment-paned.c b/src/e-util/e-attachment-paned.c
index 92afe20020..17ccd393a6 100644
--- a/src/e-util/e-attachment-paned.c
+++ b/src/e-util/e-attachment-paned.c
@@ -294,50 +294,15 @@ attachment_paned_dispose (GObject *object)
                priv->model = NULL;
        }
 
-       if (priv->expander != NULL) {
-               g_object_unref (priv->expander);
-               priv->expander = NULL;
-       }
-
-       if (priv->notebook != NULL) {
-               g_object_unref (priv->notebook);
-               priv->notebook = NULL;
-       }
-
-       if (priv->combo_box != NULL) {
-               g_object_unref (priv->combo_box);
-               priv->combo_box = NULL;
-       }
-
-       if (priv->icon_view != NULL) {
-               g_object_unref (priv->icon_view);
-               priv->icon_view = NULL;
-       }
-
-       if (priv->tree_view != NULL) {
-               g_object_unref (priv->tree_view);
-               priv->tree_view = NULL;
-       }
-
-       if (priv->show_hide_label != NULL) {
-               g_object_unref (priv->show_hide_label);
-               priv->show_hide_label = NULL;
-       }
-
-       if (priv->status_icon != NULL) {
-               g_object_unref (priv->status_icon);
-               priv->status_icon = NULL;
-       }
-
-       if (priv->status_label != NULL) {
-               g_object_unref (priv->status_label);
-               priv->status_label = NULL;
-       }
-
-       if (priv->content_area != NULL) {
-               g_object_unref (priv->content_area);
-               priv->content_area = NULL;
-       }
+       g_clear_object (&priv->expander);
+       g_clear_object (&priv->notebook);
+       g_clear_object (&priv->combo_box);
+       g_clear_object (&priv->icon_view);
+       g_clear_object (&priv->tree_view);
+       g_clear_object (&priv->show_hide_label);
+       g_clear_object (&priv->status_icon);
+       g_clear_object (&priv->status_label);
+       g_clear_object (&priv->content_area);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_attachment_paned_parent_class)->dispose (object);
diff --git a/src/e-util/e-attachment-store.c b/src/e-util/e-attachment-store.c
index 0ba4ae2231..234622aa54 100644
--- a/src/e-util/e-attachment-store.c
+++ b/src/e-util/e-attachment-store.c
@@ -1523,26 +1523,11 @@ attachment_store_save_context_free (SaveContext *save_context)
        /* So should the error. */
        g_warn_if_fail (save_context->error == NULL);
 
-       if (save_context->destination) {
-               g_object_unref (save_context->destination);
-               save_context->destination = NULL;
-       }
-
-       g_free (save_context->filename_prefix);
-       save_context->filename_prefix = NULL;
-
-       if (save_context->fresh_directory) {
-               g_object_unref (save_context->fresh_directory);
-               save_context->fresh_directory = NULL;
-       }
-
-       if (save_context->trash_directory) {
-               g_object_unref (save_context->trash_directory);
-               save_context->trash_directory = NULL;
-       }
-
+       g_clear_object (&save_context->destination);
+       g_clear_object (&save_context->fresh_directory);
+       g_clear_object (&save_context->trash_directory);
+       g_clear_pointer (&save_context->filename_prefix, g_free);
        g_strfreev (save_context->uris);
-
        g_slice_free (SaveContext, save_context);
 }
 
diff --git a/src/e-util/e-attachment-view.c b/src/e-util/e-attachment-view.c
index e0c614f81c..2d54acf43d 100644
--- a/src/e-util/e-attachment-view.c
+++ b/src/e-util/e-attachment-view.c
@@ -523,10 +523,8 @@ attachment_view_uri_list (EAttachmentView *view,
 
                        g_object_unref (attachment);
                        g_object_unref (mime_part);
-                       if (mime_type)
-                               g_free (mime_type);
-                       if (filename)
-                               g_free (filename);
+                       g_free (mime_type);
+                       g_free (filename);
                        g_free (base64_data);
                } else {
                        /* regular URIs */
@@ -962,15 +960,8 @@ e_attachment_view_dispose (EAttachmentView *view)
 
        priv = e_attachment_view_get_private (view);
 
-       if (priv->target_list != NULL) {
-               gtk_target_list_unref (priv->target_list);
-               priv->target_list = NULL;
-       }
-
-       if (priv->ui_manager != NULL) {
-               g_object_unref (priv->ui_manager);
-               priv->ui_manager = NULL;
-       }
+       g_clear_pointer (&priv->target_list, gtk_target_list_unref);
+       g_clear_object (&priv->ui_manager);
 }
 
 void
diff --git a/src/e-util/e-attachment.c b/src/e-util/e-attachment.c
index 71d3c533cf..00e08a9f0e 100644
--- a/src/e-util/e-attachment.c
+++ b/src/e-util/e-attachment.c
@@ -2865,31 +2865,15 @@ attachment_save_context_free (SaveContext *save_context)
 {
        g_object_unref (save_context->attachment);
        g_object_unref (save_context->simple);
-
-       if (save_context->directory != NULL)
-               g_object_unref (save_context->directory);
-
-       if (save_context->destination != NULL)
-               g_object_unref (save_context->destination);
-
-       if (save_context->input_stream != NULL)
-               g_object_unref (save_context->input_stream);
-
-       if (save_context->output_stream != NULL)
-               g_object_unref (save_context->output_stream);
-
-       if (save_context->input_buffer != NULL)
-               g_byte_array_unref (save_context->input_buffer);
-
-       if (save_context->suggested_destname != NULL)
-               g_free (save_context->suggested_destname);
-
-       if (save_context->temporary_file != NULL)
-               g_clear_object (&save_context->temporary_file);
-
+       g_clear_object (&save_context->directory);
+       g_clear_object (&save_context->destination);
+       g_clear_object (&save_context->input_stream);
+       g_clear_object (&save_context->output_stream);
+       g_clear_pointer (&save_context->input_buffer, g_byte_array_unref);
+       g_free (save_context->suggested_destname);
+       g_clear_object (&save_context->temporary_file);
        g_mutex_clear (&(save_context->completed_tasks_mutex));
        g_mutex_clear (&(save_context->prepared_tasks_mutex));
-
        g_slice_free (SaveContext, save_context);
 }
 
diff --git a/src/e-util/e-book-source-config.c b/src/e-util/e-book-source-config.c
index 4899fc61c9..5c25b5cabf 100644
--- a/src/e-util/e-book-source-config.c
+++ b/src/e-util/e-book-source-config.c
@@ -62,16 +62,8 @@ book_source_config_dispose (GObject *object)
        EBookSourceConfigPrivate *priv;
 
        priv = E_BOOK_SOURCE_CONFIG_GET_PRIVATE (object);
-
-       if (priv->default_button != NULL) {
-               g_object_unref (priv->default_button);
-               priv->default_button = NULL;
-       }
-
-       if (priv->autocomplete_button != NULL) {
-               g_object_unref (priv->autocomplete_button);
-               priv->autocomplete_button = NULL;
-       }
+       g_clear_object (&priv->default_button);
+       g_clear_object (&priv->autocomplete_button);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_book_source_config_parent_class)->dispose (object);
diff --git a/src/e-util/e-cal-source-config.c b/src/e-util/e-cal-source-config.c
index 833f580f4e..9617343a8a 100644
--- a/src/e-util/e-cal-source-config.c
+++ b/src/e-util/e-cal-source-config.c
@@ -127,16 +127,8 @@ cal_source_config_dispose (GObject *object)
        ECalSourceConfigPrivate *priv;
 
        priv = E_CAL_SOURCE_CONFIG_GET_PRIVATE (object);
-
-       if (priv->color_button != NULL) {
-               g_object_unref (priv->color_button);
-               priv->color_button = NULL;
-       }
-
-       if (priv->default_button != NULL) {
-               g_object_unref (priv->default_button);
-               priv->default_button = NULL;
-       }
+       g_clear_object (&priv->color_button);
+       g_clear_object (&priv->default_button);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_cal_source_config_parent_class)->dispose (object);
diff --git a/src/e-util/e-calendar-item.c b/src/e-util/e-calendar-item.c
index 5d3be31c51..c08d01ef4b 100644
--- a/src/e-util/e-calendar-item.c
+++ b/src/e-util/e-calendar-item.c
@@ -668,28 +668,17 @@ e_calendar_item_dispose (GObject *object)
        e_calendar_item_set_style_callback (calitem, NULL, NULL, NULL);
        e_calendar_item_set_get_time_callback (calitem, NULL, NULL, NULL);
 
-       if (calitem->styles) {
-               g_free (calitem->styles);
-               calitem->styles = NULL;
-       }
+       g_clear_pointer (&calitem->styles, g_free);
 
        if (calitem->signal_emission_idle_id > 0) {
                g_source_remove (calitem->signal_emission_idle_id);
                calitem->signal_emission_idle_id = -1;
        }
 
-       if (calitem->font_desc) {
-               pango_font_description_free (calitem->font_desc);
-               calitem->font_desc = NULL;
-       }
-
-       if (calitem->week_number_font_desc) {
-               pango_font_description_free (calitem->week_number_font_desc);
-               calitem->week_number_font_desc = NULL;
-       }
+       g_clear_pointer (&calitem->font_desc, pango_font_description_free);
+       g_clear_pointer (&calitem->week_number_font_desc, pango_font_description_free);
 
-       if (calitem->selecting_axis)
-               g_free (calitem->selecting_axis);
+       g_free (calitem->selecting_axis);
 
        G_OBJECT_CLASS (e_calendar_item_parent_class)->dispose (object);
 }
@@ -1984,10 +1973,7 @@ e_calendar_item_stop_selecting (ECalendarItem *calitem,
                        calitem->month + 1, FALSE);
 
        calitem->selection_changed = TRUE;
-       if (calitem->selecting_axis) {
-               g_free (calitem->selecting_axis);
-               calitem->selecting_axis = NULL;
-       }
+       g_clear_pointer (&calitem->selecting_axis, g_free);
 
        e_calendar_item_queue_signal_emission (calitem);
        gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (calitem));
@@ -2038,10 +2024,7 @@ e_calendar_item_selection_add_days (ECalendarItem *calitem,
        }
        else {
                /* clear "selecting_axis", it is only for mulit-selecting */
-               if (calitem->selecting_axis) {
-                       g_free (calitem->selecting_axis);
-                       calitem->selecting_axis = NULL;
-               }
+               g_clear_pointer (&calitem->selecting_axis, g_free);
                g_date_add_days (&gdate_start, n_days);
                gdate_end = gdate_start;
        }
diff --git a/src/e-util/e-canvas.c b/src/e-util/e-canvas.c
index 7929a17bf8..aafaa65138 100644
--- a/src/e-util/e-canvas.c
+++ b/src/e-util/e-canvas.c
@@ -381,10 +381,7 @@ canvas_dispose (GObject *object)
                canvas->toplevel = NULL;
        }
 
-       if (canvas->im_context) {
-               g_object_unref (canvas->im_context);
-               canvas->im_context = NULL;
-       }
+       g_clear_object (&canvas->im_context);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_canvas_parent_class)->dispose (object);
diff --git a/src/e-util/e-categories-selector.c b/src/e-util/e-categories-selector.c
index 2d21014e7b..388c7743d3 100644
--- a/src/e-util/e-categories-selector.c
+++ b/src/e-util/e-categories-selector.c
@@ -231,11 +231,7 @@ categories_selector_dispose (GObject *object)
        ECategoriesSelectorPrivate *priv;
 
        priv = E_CATEGORIES_SELECTOR_GET_PRIVATE (object);
-
-       if (priv->selected_categories != NULL) {
-               g_hash_table_destroy (priv->selected_categories);
-               priv->selected_categories = NULL;
-       }
+       g_clear_pointer (&priv->selected_categories, g_hash_table_destroy);
 
        /* Chain up to parent's dispose() method.*/
        G_OBJECT_CLASS (e_categories_selector_parent_class)->dispose (object);
diff --git a/src/e-util/e-cell-combo.c b/src/e-util/e-cell-combo.c
index b3eb2aa76b..8c0679ee8a 100644
--- a/src/e-util/e-cell-combo.c
+++ b/src/e-util/e-cell-combo.c
@@ -217,10 +217,7 @@ e_cell_combo_dispose (GObject *object)
 {
        ECellCombo *ecc = E_CELL_COMBO (object);
 
-       if (ecc->popup_window != NULL) {
-               gtk_widget_destroy (ecc->popup_window);
-               ecc->popup_window = NULL;
-       }
+       g_clear_pointer (&ecc->popup_window, gtk_widget_destroy);
 
        if (ecc->grabbed_keyboard != NULL) {
                gdk_device_ungrab (ecc->grabbed_keyboard, GDK_CURRENT_TIME);
diff --git a/src/e-util/e-cell-date-edit.c b/src/e-util/e-cell-date-edit.c
index f3b9c83a55..9dd916af22 100644
--- a/src/e-util/e-cell-date-edit.c
+++ b/src/e-util/e-cell-date-edit.c
@@ -487,10 +487,7 @@ e_cell_date_edit_dispose (GObject *object)
 
        e_cell_date_edit_set_get_time_callback (ecde, NULL, NULL, NULL);
 
-       if (ecde->popup_window != NULL) {
-               gtk_widget_destroy (ecde->popup_window);
-               ecde->popup_window = NULL;
-       }
+       g_clear_pointer (&ecde->popup_window, gtk_widget_destroy);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_cell_date_edit_parent_class)->dispose (object);
diff --git a/src/e-util/e-cell-popup.c b/src/e-util/e-cell-popup.c
index 0011451acf..e2ba21489a 100644
--- a/src/e-util/e-cell-popup.c
+++ b/src/e-util/e-cell-popup.c
@@ -156,9 +156,7 @@ e_cell_popup_dispose (GObject *object)
 {
        ECellPopup *ecp = E_CELL_POPUP (object);
 
-       if (ecp->child)
-               g_object_unref (ecp->child);
-       ecp->child = NULL;
+       g_clear_object (&ecp->child);
 
        G_OBJECT_CLASS (e_cell_popup_parent_class)->dispose (object);
 }
diff --git a/src/e-util/e-cell-text.c b/src/e-util/e-cell-text.c
index 60fc32ed49..b92fc5ab0f 100644
--- a/src/e-util/e-cell-text.c
+++ b/src/e-util/e-cell-text.c
@@ -535,8 +535,7 @@ layout_with_preedit (ECellTextView *text_view,
                pango_attr_list_splice (attrs, preedit_attrs, mlen, preedit_length);
        pango_layout_set_attributes (layout, attrs);
        g_string_free (tmp_string, TRUE);
-       if (preedit_string)
-               g_free (preedit_string);
+       g_free (preedit_string);
        if (preedit_attrs)
                pango_attr_list_unref (preedit_attrs);
        pango_attr_list_unref (attrs);
diff --git a/src/e-util/e-cell-toggle.c b/src/e-util/e-cell-toggle.c
index 4281aed164..ff08f43185 100644
--- a/src/e-util/e-cell-toggle.c
+++ b/src/e-util/e-cell-toggle.c
@@ -106,11 +106,7 @@ cell_toggle_dispose (GObject *object)
        ECellTogglePrivate *priv;
 
        priv = E_CELL_TOGGLE_GET_PRIVATE (object);
-
-       if (priv->empty != NULL) {
-               g_object_unref (priv->empty);
-               priv->empty = NULL;
-       }
+       g_clear_object (&priv->empty);
 
        /* This unrefs all the elements. */
        g_ptr_array_set_size (priv->pixbufs, 0);
diff --git a/src/e-util/e-cell-tree.c b/src/e-util/e-cell-tree.c
index ab7c4e972b..602b225463 100644
--- a/src/e-util/e-cell-tree.c
+++ b/src/e-util/e-cell-tree.c
@@ -792,9 +792,7 @@ ect_dispose (GObject *object)
        ECellTree *ect = E_CELL_TREE (object);
 
        /* destroy our subcell */
-       if (ect->subcell)
-               g_object_unref (ect->subcell);
-       ect->subcell = NULL;
+       g_clear_object (&ect->subcell);
 
        G_OBJECT_CLASS (e_cell_tree_parent_class)->dispose (object);
 }
diff --git a/src/e-util/e-charset-combo-box.c b/src/e-util/e-charset-combo-box.c
index 444e2eb224..f7e9b148e7 100644
--- a/src/e-util/e-charset-combo-box.c
+++ b/src/e-util/e-charset-combo-box.c
@@ -221,16 +221,8 @@ charset_combo_box_dispose (GObject *object)
        ECharsetComboBoxPrivate *priv;
 
        priv = E_CHARSET_COMBO_BOX_GET_PRIVATE (object);
-
-       if (priv->action_group != NULL) {
-               g_object_unref (priv->action_group);
-               priv->action_group = NULL;
-       }
-
-       if (priv->other_action != NULL) {
-               g_object_unref (priv->other_action);
-               priv->other_action = NULL;
-       }
+       g_clear_object (&priv->action_group);
+       g_clear_object (&priv->other_action);
 
        g_hash_table_remove_all (priv->charset_index);
 
diff --git a/src/e-util/e-client-cache.c b/src/e-util/e-client-cache.c
index d2dc9f3901..911cd98a7e 100644
--- a/src/e-util/e-client-cache.c
+++ b/src/e-util/e-client-cache.c
@@ -763,10 +763,7 @@ client_cache_dispose (GObject *object)
 
        g_hash_table_remove_all (priv->client_ht);
 
-       if (priv->main_context != NULL) {
-               g_main_context_unref (priv->main_context);
-               priv->main_context = NULL;
-       }
+       g_clear_pointer (&priv->main_context, g_main_context_unref);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_client_cache_parent_class)->dispose (object);
diff --git a/src/e-util/e-collection-account-wizard.c b/src/e-util/e-collection-account-wizard.c
index 977b19defe..f790f9660d 100644
--- a/src/e-util/e-collection-account-wizard.c
+++ b/src/e-util/e-collection-account-wizard.c
@@ -556,10 +556,7 @@ collection_account_wizard_worker_finished_cb (EConfigLookup *config_lookup,
                        gtk_widget_set_sensitive (wd2->enabled_check, TRUE);
                }
 
-               if (wizard->priv->running_result) {
-                       e_simple_async_result_complete_idle_take (wizard->priv->running_result);
-                       wizard->priv->running_result = NULL;
-               }
+               g_clear_pointer (&wizard->priv->running_result, e_simple_async_result_complete_idle_take);
 
                g_object_notify (G_OBJECT (wizard), "can-run");
 
@@ -2163,21 +2160,9 @@ collection_account_wizard_dispose (GObject *object)
        g_clear_object (&wizard->priv->registry);
        g_clear_object (&wizard->priv->config_lookup);
        g_clear_object (&wizard->priv->finish_cancellable);
-
-       if (wizard->priv->workers) {
-               g_hash_table_destroy (wizard->priv->workers);
-               wizard->priv->workers = NULL;
-       }
-
-       if (wizard->priv->store_passwords) {
-               g_hash_table_destroy (wizard->priv->store_passwords);
-               wizard->priv->store_passwords = NULL;
-       }
-
-       if (wizard->priv->running_result) {
-               e_simple_async_result_complete_idle_take (wizard->priv->running_result);
-               wizard->priv->running_result = NULL;
-       }
+       g_clear_pointer (&wizard->priv->workers, g_hash_table_destroy);
+       g_clear_pointer (&wizard->priv->store_passwords, g_hash_table_destroy);
+       g_clear_pointer (&wizard->priv->running_result, e_simple_async_result_complete_idle_take);
 
        for (ii = 0; ii <= E_CONFIG_LOOKUP_RESULT_LAST_KIND; ii++) {
                g_clear_object (&wizard->priv->sources[ii]);
diff --git a/src/e-util/e-color-combo.c b/src/e-util/e-color-combo.c
index 01dc050d90..11c738a349 100644
--- a/src/e-util/e-color-combo.c
+++ b/src/e-util/e-color-combo.c
@@ -414,21 +414,9 @@ color_combo_dispose (GObject *object)
        EColorComboPrivate *priv;
 
        priv = E_COLOR_COMBO_GET_PRIVATE (object);
-
-       if (priv->popover) {
-               gtk_widget_destroy (priv->popover);
-               priv->popover = NULL;
-       }
-
-       if (priv->current_color != NULL) {
-               gdk_rgba_free (priv->current_color);
-               priv->current_color = NULL;
-       }
-
-       if (priv->default_color != NULL) {
-               gdk_rgba_free (priv->default_color);
-               priv->default_color = NULL;
-       }
+       g_clear_pointer (&priv->popover, gtk_widget_destroy);
+       g_clear_pointer (&priv->current_color, gdk_rgba_free);
+       g_clear_pointer (&priv->default_color, gdk_rgba_free);
 
        g_list_free_full (priv->palette, (GDestroyNotify) gdk_rgba_free);
        priv->palette = NULL;
diff --git a/src/e-util/e-contact-store.c b/src/e-util/e-contact-store.c
index 56c2b513a4..5c2527864f 100644
--- a/src/e-util/e-contact-store.c
+++ b/src/e-util/e-contact-store.c
@@ -132,10 +132,7 @@ contact_store_dispose (GObject *object)
        }
        g_array_set_size (priv->contact_sources, 0);
 
-       if (priv->query != NULL) {
-               e_book_query_unref (priv->query);
-               priv->query = NULL;
-       }
+       g_clear_pointer (&priv->query, e_book_query_unref);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_contact_store_parent_class)->dispose (object);
diff --git a/src/e-util/e-dateedit.c b/src/e-util/e-dateedit.c
index d01b3d7828..a6f40ff6ad 100644
--- a/src/e-util/e-dateedit.c
+++ b/src/e-util/e-dateedit.c
@@ -336,10 +336,7 @@ date_edit_dispose (GObject *object)
 
        e_date_edit_set_get_time_callback (dedit, NULL, NULL, NULL);
 
-       if (dedit->priv->cal_popup != NULL) {
-               gtk_widget_destroy (dedit->priv->cal_popup);
-               dedit->priv->cal_popup = NULL;
-       }
+       g_clear_pointer (&dedit->priv->cal_popup, gtk_widget_destroy);
 
        if (dedit->priv->grabbed_keyboard != NULL) {
                gdk_device_ungrab (
diff --git a/src/e-util/e-emoticon-tool-button.c b/src/e-util/e-emoticon-tool-button.c
index e50a4dfa7f..3101e50ec7 100644
--- a/src/e-util/e-emoticon-tool-button.c
+++ b/src/e-util/e-emoticon-tool-button.c
@@ -252,11 +252,7 @@ emoticon_tool_button_dispose (GObject *object)
        EEmoticonToolButtonPrivate *priv;
 
        priv = E_EMOTICON_TOOL_BUTTON_GET_PRIVATE (object);
-
-       if (priv->popover != NULL) {
-               gtk_widget_destroy (priv->popover);
-               priv->popover = NULL;
-       }
+       g_clear_pointer (&priv->popover, gtk_widget_destroy);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_emoticon_tool_button_parent_class)->dispose (object);
diff --git a/src/e-util/e-filter-input.c b/src/e-util/e-filter-input.c
index 3f352797df..f4b3200095 100644
--- a/src/e-util/e-filter-input.c
+++ b/src/e-util/e-filter-input.c
@@ -195,8 +195,7 @@ filter_input_xml_create (EFilterElement *element,
                        xmlChar *func = xmlGetProp (n, (xmlChar *) "func");
 
                        if (func && *func) {
-                               if (input->code_gen_func)
-                                       g_free (input->code_gen_func);
+                               g_free (input->code_gen_func);
                                input->code_gen_func = g_strdup ((gchar *) func);
                        }
 
diff --git a/src/e-util/e-image-chooser.c b/src/e-util/e-image-chooser.c
index d299ea7c7d..33314caf3f 100644
--- a/src/e-util/e-image-chooser.c
+++ b/src/e-util/e-image-chooser.c
@@ -373,16 +373,8 @@ image_chooser_dispose (GObject *object)
        EImageChooserPrivate *priv;
 
        priv = E_IMAGE_CHOOSER_GET_PRIVATE (object);
-
-       if (priv->frame != NULL) {
-               g_object_unref (priv->frame);
-               priv->frame = NULL;
-       }
-
-       if (priv->image != NULL) {
-               g_object_unref (priv->image);
-               priv->image = NULL;
-       }
+       g_clear_object (&priv->frame);
+       g_clear_object (&priv->image);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_image_chooser_parent_class)->dispose (object);
diff --git a/src/e-util/e-import-assistant.c b/src/e-util/e-import-assistant.c
index ef5705db4a..395b8ad23b 100644
--- a/src/e-util/e-import-assistant.c
+++ b/src/e-util/e-import-assistant.c
@@ -1230,10 +1230,7 @@ import_assistant_dispose (GObject *object)
                priv->simple_page.target = NULL;
        }
 
-       if (priv->import != NULL) {
-               g_object_unref (priv->import);
-               priv->import = NULL;
-       }
+       g_clear_object (&priv->import);
 
        if (priv->fileuris != NULL) {
                g_ptr_array_foreach (priv->fileuris, (GFunc) g_free, NULL);
diff --git a/src/e-util/e-mail-signature-editor.c b/src/e-util/e-mail-signature-editor.c
index a2fa5d1149..38d8d2a729 100644
--- a/src/e-util/e-mail-signature-editor.c
+++ b/src/e-util/e-mail-signature-editor.c
@@ -463,21 +463,9 @@ mail_signature_editor_dispose (GObject *object)
        EMailSignatureEditorPrivate *priv;
 
        priv = E_MAIL_SIGNATURE_EDITOR_GET_PRIVATE (object);
-
-       if (priv->editor != NULL) {
-               g_object_unref (priv->editor);
-               priv->editor = NULL;
-       }
-
-       if (priv->action_group != NULL) {
-               g_object_unref (priv->action_group);
-               priv->action_group = NULL;
-       }
-
-       if (priv->focus_tracker != NULL) {
-               g_object_unref (priv->focus_tracker);
-               priv->focus_tracker = NULL;
-       }
+       g_clear_object (&priv->editor);
+       g_clear_object (&priv->action_group);
+       g_clear_object (&priv->focus_tracker);
 
        if (priv->cancellable != NULL) {
                g_cancellable_cancel (priv->cancellable);
@@ -485,15 +473,8 @@ mail_signature_editor_dispose (GObject *object)
                priv->cancellable = NULL;
        }
 
-       if (priv->registry != NULL) {
-               g_object_unref (priv->registry);
-               priv->registry = NULL;
-       }
-
-       if (priv->source != NULL) {
-               g_object_unref (priv->source);
-               priv->source = NULL;
-       }
+       g_clear_object (&priv->registry);
+       g_clear_object (&priv->source);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_signature_editor_parent_class)->
diff --git a/src/e-util/e-mail-signature-manager.c b/src/e-util/e-mail-signature-manager.c
index e202039cdb..b414828d1f 100644
--- a/src/e-util/e-mail-signature-manager.c
+++ b/src/e-util/e-mail-signature-manager.c
@@ -235,11 +235,7 @@ mail_signature_manager_dispose (GObject *object)
        EMailSignatureManagerPrivate *priv;
 
        priv = E_MAIL_SIGNATURE_MANAGER_GET_PRIVATE (object);
-
-       if (priv->registry != NULL) {
-               g_object_unref (priv->registry);
-               priv->registry = NULL;
-       }
+       g_clear_object (&priv->registry);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_signature_manager_parent_class)->
diff --git a/src/e-util/e-mail-signature-preview.c b/src/e-util/e-mail-signature-preview.c
index 80adfb8695..5e22cbefa7 100644
--- a/src/e-util/e-mail-signature-preview.c
+++ b/src/e-util/e-mail-signature-preview.c
@@ -189,11 +189,7 @@ mail_signature_preview_dispose (GObject *object)
        EMailSignaturePreviewPrivate *priv;
 
        priv = E_MAIL_SIGNATURE_PREVIEW_GET_PRIVATE (object);
-
-       if (priv->registry != NULL) {
-               g_object_unref (priv->registry);
-               priv->registry = NULL;
-       }
+       g_clear_object (&priv->registry);
 
        if (priv->cancellable != NULL) {
                g_cancellable_cancel (priv->cancellable);
diff --git a/src/e-util/e-mail-signature-script-dialog.c b/src/e-util/e-mail-signature-script-dialog.c
index d7cbf1ef26..5fe1135154 100644
--- a/src/e-util/e-mail-signature-script-dialog.c
+++ b/src/e-util/e-mail-signature-script-dialog.c
@@ -310,16 +310,8 @@ mail_signature_script_dialog_dispose (GObject *object)
        EMailSignatureScriptDialogPrivate *priv;
 
        priv = E_MAIL_SIGNATURE_SCRIPT_DIALOG_GET_PRIVATE (object);
-
-       if (priv->registry != NULL) {
-               g_object_unref (priv->registry);
-               priv->registry = NULL;
-       }
-
-       if (priv->source != NULL) {
-               g_object_unref (priv->source);
-               priv->source = NULL;
-       }
+       g_clear_object (&priv->registry);
+       g_clear_object (&priv->source);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_signature_script_dialog_parent_class)->
diff --git a/src/e-util/e-map.c b/src/e-util/e-map.c
index 61419d18a2..21e5d1cc7c 100644
--- a/src/e-util/e-map.c
+++ b/src/e-util/e-map.c
@@ -561,10 +561,7 @@ e_map_finalize (GObject *object)
                e_map_tween_destroy (map, map->priv->tweens->data);
        e_map_stop_tweening (map);
 
-       if (map->priv->map_pixbuf) {
-               g_object_unref (map->priv->map_pixbuf);
-               map->priv->map_pixbuf = NULL;
-       }
+       g_clear_object (&map->priv->map_pixbuf);
 
        /* gone in unrealize */
        g_warn_if_fail (map->priv->map_render_surface == NULL);
diff --git a/src/e-util/e-misc-utils.c b/src/e-util/e-misc-utils.c
index 68e427d260..cb62f32ae6 100644
--- a/src/e-util/e-misc-utils.c
+++ b/src/e-util/e-misc-utils.c
@@ -3255,10 +3255,7 @@ e_util_cleanup_settings (void)
 {
        g_mutex_lock (&settings_hash_lock);
 
-       if (settings_hash) {
-               g_hash_table_destroy (settings_hash);
-               settings_hash = NULL;
-       }
+       g_clear_pointer (&settings_hash, g_hash_table_destroy);
 
        g_mutex_unlock (&settings_hash_lock);
 }
@@ -4409,15 +4406,8 @@ e_util_get_language_name (const gchar *language_tag)
 void
 e_misc_util_free_global_memory (void)
 {
-       if (iso_639_table) {
-               g_hash_table_destroy (iso_639_table);
-               iso_639_table = NULL;
-       }
-
-       if (iso_3166_table) {
-               g_hash_table_destroy (iso_3166_table);
-               iso_3166_table = NULL;
-       }
+       g_clear_pointer (&iso_639_table, g_hash_table_destroy);
+       g_clear_pointer (&iso_3166_table, g_hash_table_destroy);
 
        e_util_cleanup_settings ();
        e_spell_checker_free_global_memory ();
diff --git a/src/e-util/e-name-selector-dialog.c b/src/e-util/e-name-selector-dialog.c
index 51ee7e1141..f4ec82b8e7 100644
--- a/src/e-util/e-name-selector-dialog.c
+++ b/src/e-util/e-name-selector-dialog.c
@@ -744,10 +744,7 @@ add_destination (ENameSelectorModel *name_selector_model,
 static void
 disable_sort (ENameSelectorDialog *dialog)
 {
-       if (dialog->priv->contact_sort) {
-               g_object_unref (dialog->priv->contact_sort);
-               dialog->priv->contact_sort = NULL;
-       }
+       g_clear_object (&dialog->priv->contact_sort);
 
        gtk_tree_view_set_model (
                dialog->priv->contact_view,
@@ -1707,10 +1704,7 @@ shutdown_name_selector_model (ENameSelectorDialog *name_selector_dialog)
 
        /* Free sorting model */
 
-       if (name_selector_dialog->priv->contact_sort) {
-               g_object_unref (name_selector_dialog->priv->contact_sort);
-               name_selector_dialog->priv->contact_sort = NULL;
-       }
+       g_clear_object (&name_selector_dialog->priv->contact_sort);
 
        /* Free backend model */
 
diff --git a/src/e-util/e-name-selector-entry.c b/src/e-util/e-name-selector-entry.c
index 38b565f78e..092439fa54 100644
--- a/src/e-util/e-name-selector-entry.c
+++ b/src/e-util/e-name-selector-entry.c
@@ -184,40 +184,13 @@ name_selector_entry_dispose (GObject *object)
 
        gtk_editable_set_position (GTK_EDITABLE (object), 0);
 
-       if (priv->client_cache != NULL) {
-               g_object_unref (priv->client_cache);
-               priv->client_cache = NULL;
-       }
-
-       if (priv->attr_list != NULL) {
-               pango_attr_list_unref (priv->attr_list);
-               priv->attr_list = NULL;
-       }
-
-       if (priv->entry_completion) {
-               g_object_unref (priv->entry_completion);
-               priv->entry_completion = NULL;
-       }
-
-       if (priv->destination_store) {
-               g_object_unref (priv->destination_store);
-               priv->destination_store = NULL;
-       }
-
-       if (priv->email_generator) {
-               g_object_unref (priv->email_generator);
-               priv->email_generator = NULL;
-       }
-
-       if (priv->contact_store) {
-               g_object_unref (priv->contact_store);
-               priv->contact_store = NULL;
-       }
-
-       if (priv->known_contacts) {
-               g_hash_table_destroy (priv->known_contacts);
-               priv->known_contacts = NULL;
-       }
+       g_clear_object (&priv->client_cache);
+       g_clear_pointer (&priv->attr_list, pango_attr_list_unref);
+       g_clear_object (&priv->entry_completion);
+       g_clear_object (&priv->destination_store);
+       g_clear_object (&priv->email_generator);
+       g_clear_object (&priv->contact_store);
+       g_clear_pointer (&priv->known_contacts, g_hash_table_destroy);
 
        g_slist_foreach (priv->user_query_fields, (GFunc) g_free, NULL);
        g_slist_free (priv->user_query_fields);
@@ -2415,10 +2388,7 @@ ensure_type_ahead_complete_on_timeout (ENameSelectorEntry *name_selector_entry)
 static void
 setup_contact_store (ENameSelectorEntry *name_selector_entry)
 {
-       if (name_selector_entry->priv->email_generator) {
-               g_object_unref (name_selector_entry->priv->email_generator);
-               name_selector_entry->priv->email_generator = NULL;
-       }
+       g_clear_object (&name_selector_entry->priv->email_generator);
 
        if (name_selector_entry->priv->contact_store) {
                name_selector_entry->priv->email_generator =
@@ -2756,10 +2726,7 @@ prepare_popup_destination (ENameSelectorEntry *name_selector_entry,
        if (event_button->button != 3)
                return FALSE;
 
-       if (name_selector_entry->priv->popup_destination) {
-               g_object_unref (name_selector_entry->priv->popup_destination);
-               name_selector_entry->priv->popup_destination = NULL;
-       }
+       g_clear_object (&name_selector_entry->priv->popup_destination);
 
        gtk_entry_get_layout_offsets (
                GTK_ENTRY (name_selector_entry),
diff --git a/src/e-util/e-name-selector.c b/src/e-util/e-name-selector.c
index 054ee568b7..0104c1ae22 100644
--- a/src/e-util/e-name-selector.c
+++ b/src/e-util/e-name-selector.c
@@ -314,10 +314,7 @@ name_selector_dispose (GObject *object)
                priv->dialog = NULL;
        }
 
-       if (priv->model) {
-               g_object_unref (priv->model);
-               priv->model = NULL;
-       }
+       g_clear_object (&priv->model);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_name_selector_parent_class)->dispose (object);
diff --git a/src/e-util/e-online-button.c b/src/e-util/e-online-button.c
index 448a47cee5..3532f4674b 100644
--- a/src/e-util/e-online-button.c
+++ b/src/e-util/e-online-button.c
@@ -127,10 +127,7 @@ online_button_dispose (GObject *object)
 
        priv = E_ONLINE_BUTTON_GET_PRIVATE (object);
 
-       if (priv->image != NULL) {
-               g_object_unref (priv->image);
-               priv->image = NULL;
-       }
+       g_clear_object (&priv->image);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_online_button_parent_class)->dispose (object);
diff --git a/src/e-util/e-photo-cache.c b/src/e-util/e-photo-cache.c
index 32abcb47a1..21cb0cafff 100644
--- a/src/e-util/e-photo-cache.c
+++ b/src/e-util/e-photo-cache.c
@@ -473,10 +473,7 @@ photo_data_set_bytes (PhotoData *photo_data,
 {
        g_mutex_lock (&photo_data->lock);
 
-       if (photo_data->bytes != NULL) {
-               g_bytes_unref (photo_data->bytes);
-               photo_data->bytes = NULL;
-       }
+       g_clear_pointer (&photo_data->bytes, g_bytes_unref);
 
        if (bytes != NULL)
                photo_data->bytes = g_bytes_ref (bytes);
diff --git a/src/e-util/e-picture-gallery.c b/src/e-util/e-picture-gallery.c
index 21e74191bc..a3c7b09a27 100644
--- a/src/e-util/e-picture-gallery.c
+++ b/src/e-util/e-picture-gallery.c
@@ -390,11 +390,7 @@ picture_gallery_dispose (GObject *object)
        EPictureGallery *gallery;
 
        gallery = E_PICTURE_GALLERY (object);
-
-       if (gallery->priv->monitor) {
-               g_object_unref (gallery->priv->monitor);
-               gallery->priv->monitor = NULL;
-       }
+       g_clear_object (&gallery->priv->monitor);
 
        g_free (gallery->priv->path);
        gallery->priv->path = NULL;
diff --git a/src/e-util/e-preferences-window.c b/src/e-util/e-preferences-window.c
index 577b7f6219..74760fb9b0 100644
--- a/src/e-util/e-preferences-window.c
+++ b/src/e-util/e-preferences-window.c
@@ -223,10 +223,7 @@ preferences_window_dispose (GObject *object)
                priv->icon_view = NULL;
        }
 
-       if (priv->notebook != NULL) {
-               g_object_unref (priv->notebook);
-               priv->notebook = NULL;
-       }
+       g_clear_object (&priv->notebook);
 
        if (priv->shell) {
                g_object_remove_weak_pointer (priv->shell, &priv->shell);
diff --git a/src/e-util/e-reflow.c b/src/e-util/e-reflow.c
index 6ce2e7adef..19c7b49bb9 100644
--- a/src/e-util/e-reflow.c
+++ b/src/e-util/e-reflow.c
@@ -895,10 +895,7 @@ e_reflow_dispose (GObject *object)
        g_free (reflow->empty_message);
        reflow->empty_message = NULL;
 
-       if (reflow->sorter) {
-               g_object_unref (reflow->sorter);
-               reflow->sorter = NULL;
-       }
+       g_clear_object (&reflow->sorter);
 
        G_OBJECT_CLASS (e_reflow_parent_class)->dispose (object);
 }
diff --git a/src/e-util/e-rule-editor.c b/src/e-util/e-rule-editor.c
index 3bef3fface..83a46c02a0 100644
--- a/src/e-util/e-rule-editor.c
+++ b/src/e-util/e-rule-editor.c
@@ -145,10 +145,7 @@ static void
 editor_destroy (ERuleEditor *editor,
                 GObject *deadbeef)
 {
-       if (editor->edit) {
-               g_object_unref (editor->edit);
-               editor->edit = NULL;
-       }
+       g_clear_object (&editor->edit);
 
        editor->dialog = NULL;
 
diff --git a/src/e-util/e-search-bar.c b/src/e-util/e-search-bar.c
index 36a8432256..567753184b 100644
--- a/src/e-util/e-search-bar.c
+++ b/src/e-util/e-search-bar.c
@@ -378,40 +378,13 @@ search_bar_dispose (GObject *object)
                priv->web_view = NULL;
        }
 
-       if (priv->entry != NULL) {
-               g_object_unref (priv->entry);
-               priv->entry = NULL;
-       }
-
-       if (priv->case_sensitive_button != NULL) {
-               g_object_unref (priv->case_sensitive_button);
-               priv->case_sensitive_button = NULL;
-       }
-
-       if (priv->prev_button != NULL) {
-               g_object_unref (priv->prev_button);
-               priv->prev_button = NULL;
-       }
-
-       if (priv->next_button != NULL) {
-               g_object_unref (priv->next_button);
-               priv->next_button = NULL;
-       }
-
-       if (priv->wrapped_next_box != NULL) {
-               g_object_unref (priv->wrapped_next_box);
-               priv->wrapped_next_box = NULL;
-       }
-
-       if (priv->wrapped_prev_box != NULL) {
-               g_object_unref (priv->wrapped_prev_box);
-               priv->wrapped_prev_box = NULL;
-       }
-
-       if (priv->matches_label != NULL) {
-               g_object_unref (priv->matches_label);
-               priv->matches_label = NULL;
-       }
+       g_clear_object (&priv->entry);
+       g_clear_object (&priv->case_sensitive_button);
+       g_clear_object (&priv->prev_button);
+       g_clear_object (&priv->next_button);
+       g_clear_object (&priv->wrapped_next_box);
+       g_clear_object (&priv->wrapped_prev_box);
+       g_clear_object (&priv->matches_label);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_search_bar_parent_class)->dispose (object);
diff --git a/src/e-util/e-selection-model-array.c b/src/e-util/e-selection-model-array.c
index dfbc0b3527..491e029db7 100644
--- a/src/e-util/e-selection-model-array.c
+++ b/src/e-util/e-selection-model-array.c
@@ -188,11 +188,7 @@ esma_dispose (GObject *object)
        ESelectionModelArray *esma;
 
        esma = E_SELECTION_MODEL_ARRAY (object);
-
-       if (esma->eba) {
-               g_object_unref (esma->eba);
-               esma->eba = NULL;
-       }
+       g_clear_object (&esma->eba);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_selection_model_array_parent_class)->dispose (object);
@@ -262,10 +258,7 @@ static void
 esma_clear (ESelectionModel *selection)
 {
        ESelectionModelArray *esma = E_SELECTION_MODEL_ARRAY (selection);
-       if (esma->eba) {
-               g_object_unref (esma->eba);
-               esma->eba = NULL;
-       }
+       g_clear_object (&esma->eba);
        esma->cursor_row = -1;
        esma->cursor_col = -1;
        esma->cursor_row_sorted = -1;
diff --git a/src/e-util/e-sorter-array.c b/src/e-util/e-sorter-array.c
index f6109ce17f..fd01c9e676 100644
--- a/src/e-util/e-sorter-array.c
+++ b/src/e-util/e-sorter-array.c
@@ -83,10 +83,7 @@ sorter_array_sort (ESorterArray *sorter_array)
                        sorter_array->sorted, rows, sizeof (gint),
                        esort_callback, sorter_array);
 
-               if (sorter_array->cmp_cache) {
-                       g_hash_table_destroy (sorter_array->cmp_cache);
-                       sorter_array->cmp_cache = NULL;
-               }
+               g_clear_pointer (&sorter_array->cmp_cache, g_hash_table_destroy);
        }
 }
 
diff --git a/src/e-util/e-source-config-dialog.c b/src/e-util/e-source-config-dialog.c
index 59807acf84..184510c66b 100644
--- a/src/e-util/e-source-config-dialog.c
+++ b/src/e-util/e-source-config-dialog.c
@@ -213,11 +213,7 @@ source_config_dialog_dispose (GObject *object)
        ESourceConfigDialogPrivate *priv;
 
        priv = E_SOURCE_CONFIG_DIALOG_GET_PRIVATE (object);
-
-       if (priv->config != NULL) {
-               g_object_unref (priv->config);
-               priv->config = NULL;
-       }
+       g_clear_object (&priv->config);
 
        if (priv->registry != NULL) {
                g_signal_handlers_disconnect_matched (
diff --git a/src/e-util/e-source-config.c b/src/e-util/e-source-config.c
index 55d94cc5e7..52d5af2c74 100644
--- a/src/e-util/e-source-config.c
+++ b/src/e-util/e-source-config.c
@@ -616,51 +616,15 @@ source_config_dispose (GObject *object)
        ESourceConfigPrivate *priv;
 
        priv = E_SOURCE_CONFIG_GET_PRIVATE (object);
-
-       if (priv->original_source != NULL) {
-               g_object_unref (priv->original_source);
-               priv->original_source = NULL;
-       }
-
-       if (priv->collection_source != NULL) {
-               g_object_unref (priv->collection_source);
-               priv->collection_source = NULL;
-       }
-
-       if (priv->registry != NULL) {
-               g_object_unref (priv->registry);
-               priv->registry = NULL;
-       }
-
-       if (priv->type_label != NULL) {
-               g_object_unref (priv->type_label);
-               priv->type_label = NULL;
-       }
-
-       if (priv->type_combo != NULL) {
-               g_object_unref (priv->type_combo);
-               priv->type_combo = NULL;
-       }
-
-       if (priv->name_label != NULL) {
-               g_object_unref (priv->name_label);
-               priv->name_label = NULL;
-       }
-
-       if (priv->name_entry != NULL) {
-               g_object_unref (priv->name_entry);
-               priv->name_entry = NULL;
-       }
-
-       if (priv->backend_box != NULL) {
-               g_object_unref (priv->backend_box);
-               priv->backend_box = NULL;
-       }
-
-       if (priv->size_group != NULL) {
-               g_object_unref (priv->size_group);
-               priv->size_group = NULL;
-       }
+       g_clear_object (&priv->original_source);
+       g_clear_object (&priv->collection_source);
+       g_clear_object (&priv->registry);
+       g_clear_object (&priv->type_label);
+       g_clear_object (&priv->type_combo);
+       g_clear_object (&priv->name_label);
+       g_clear_object (&priv->name_entry);
+       g_clear_object (&priv->backend_box);
+       g_clear_object (&priv->size_group);
 
        g_hash_table_remove_all (priv->backends);
        g_ptr_array_set_size (priv->candidates, 0);
diff --git a/src/e-util/e-spell-checker.c b/src/e-util/e-spell-checker.c
index 5c72859beb..f451124cb0 100644
--- a/src/e-util/e-spell-checker.c
+++ b/src/e-util/e-spell-checker.c
@@ -284,10 +284,7 @@ e_spell_checker_free_global_memory (void)
                global_broker = NULL;
        }
 
-       if (global_language_tags) {
-               g_hash_table_destroy (global_language_tags);
-               global_language_tags = NULL;
-       }
+       g_clear_pointer (&global_language_tags, g_hash_table_destroy);
 
        G_UNLOCK (global_memory);
 }
diff --git a/src/e-util/e-spell-entry.c b/src/e-util/e-spell-entry.c
index dad93e8152..7b69a5c337 100644
--- a/src/e-util/e-spell-entry.c
+++ b/src/e-util/e-spell-entry.c
@@ -855,10 +855,7 @@ spell_entry_dispose (GObject *object)
 
        g_clear_object (&priv->spell_checker);
 
-       if (priv->attr_list != NULL) {
-               pango_attr_list_unref (priv->attr_list);
-               priv->attr_list = NULL;
-       }
+       g_clear_pointer (&priv->attr_list, pango_attr_list_unref);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_spell_entry_parent_class)->dispose (object);
diff --git a/src/e-util/e-table-click-to-add.c b/src/e-util/e-table-click-to-add.c
index 59138c3398..e1224c7503 100644
--- a/src/e-util/e-table-click-to-add.c
+++ b/src/e-util/e-table-click-to-add.c
@@ -193,9 +193,7 @@ etcta_dispose (GObject *object)
        etcta_drop_table_header (etcta);
        etcta_drop_model (etcta);
        etcta_drop_message (etcta);
-       if (etcta->selection)
-               g_object_unref (etcta->selection);
-       etcta->selection = NULL;
+       g_clear_object (&etcta->selection);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_table_click_to_add_parent_class)->dispose (object);
diff --git a/src/e-util/e-table-col.c b/src/e-util/e-table-col.c
index b26070daed..62f05f84f4 100644
--- a/src/e-util/e-table-col.c
+++ b/src/e-util/e-table-col.c
@@ -54,14 +54,8 @@ etc_dispose (GObject *object)
        ETableCol *etc = E_TABLE_COL (object);
 
        g_clear_object (&etc->spec);
-
-       if (etc->ecell)
-               g_object_unref (etc->ecell);
-       etc->ecell = NULL;
-
-       if (etc->pixbuf)
-               g_object_unref (etc->pixbuf);
-       etc->pixbuf = NULL;
+       g_clear_object (&etc->ecell);
+       g_clear_object (&etc->pixbuf);
 
        g_free (etc->text);
        etc->text = NULL;
diff --git a/src/e-util/e-table-config.c b/src/e-util/e-table-config.c
index b08e0e00e9..f94f1726a3 100644
--- a/src/e-util/e-table-config.c
+++ b/src/e-util/e-table-config.c
@@ -57,17 +57,9 @@ config_finalize (GObject *object)
 {
        ETableConfig *config = E_TABLE_CONFIG (object);
 
-       if (config->state)
-               g_object_unref (config->state);
-       config->state = NULL;
-
-       if (config->source_state)
-               g_object_unref (config->source_state);
-       config->source_state = NULL;
-
-       if (config->source_spec)
-               g_object_unref (config->source_spec);
-       config->source_spec = NULL;
+       g_clear_object (&config->state);
+       g_clear_object (&config->source_state);
+       g_clear_object (&config->source_spec);
 
        g_free (config->header);
        config->header = NULL;
diff --git a/src/e-util/e-table-extras.c b/src/e-util/e-table-extras.c
index c043bfbd45..bc64bff524 100644
--- a/src/e-util/e-table-extras.c
+++ b/src/e-util/e-table-extras.c
@@ -61,26 +61,10 @@ ete_finalize (GObject *object)
        ETableExtrasPrivate *priv;
 
        priv = E_TABLE_EXTRAS_GET_PRIVATE (object);
-
-       if (priv->cells) {
-               g_hash_table_destroy (priv->cells);
-               priv->cells = NULL;
-       }
-
-       if (priv->compares) {
-               g_hash_table_destroy (priv->compares);
-               priv->compares = NULL;
-       }
-
-       if (priv->searches) {
-               g_hash_table_destroy (priv->searches);
-               priv->searches = NULL;
-       }
-
-       if (priv->icon_names) {
-               g_hash_table_destroy (priv->icon_names);
-               priv->icon_names = NULL;
-       }
+       g_clear_pointer (&priv->cells, g_hash_table_destroy);
+       g_clear_pointer (&priv->compares, g_hash_table_destroy);
+       g_clear_pointer (&priv->searches, g_hash_table_destroy);
+       g_clear_pointer (&priv->icon_names, g_hash_table_destroy);
 
        G_OBJECT_CLASS (e_table_extras_parent_class)->finalize (object);
 }
diff --git a/src/e-util/e-table-field-chooser-dialog.c b/src/e-util/e-table-field-chooser-dialog.c
index 003956706b..a55fa5a51a 100644
--- a/src/e-util/e-table-field-chooser-dialog.c
+++ b/src/e-util/e-table-field-chooser-dialog.c
@@ -120,17 +120,9 @@ e_table_field_chooser_dialog_dispose (GObject *object)
 {
        ETableFieldChooserDialog *etfcd = E_TABLE_FIELD_CHOOSER_DIALOG (object);
 
-       if (etfcd->dnd_code)
-               g_free (etfcd->dnd_code);
-       etfcd->dnd_code = NULL;
-
-       if (etfcd->full_header)
-               g_object_unref (etfcd->full_header);
-       etfcd->full_header = NULL;
-
-       if (etfcd->header)
-               g_object_unref (etfcd->header);
-       etfcd->header = NULL;
+       g_clear_pointer (&etfcd->dnd_code, g_free);
+       g_clear_object (&etfcd->full_header);
+       g_clear_object (&etfcd->header);
 
        G_OBJECT_CLASS (e_table_field_chooser_dialog_parent_class)->dispose (object);
 }
diff --git a/src/e-util/e-table-field-chooser-item.c b/src/e-util/e-table-field-chooser-item.c
index 01622e73af..2f24b29cc5 100644
--- a/src/e-util/e-table-field-chooser-item.c
+++ b/src/e-util/e-table-field-chooser-item.c
@@ -72,13 +72,8 @@ etfci_dispose (GObject *object)
        etfci_drop_table_header (etfci);
        etfci_drop_full_header (etfci);
 
-       if (etfci->combined_header)
-               g_object_unref (etfci->combined_header);
-       etfci->combined_header = NULL;
-
-       if (etfci->font_desc)
-               pango_font_description_free (etfci->font_desc);
-       etfci->font_desc = NULL;
+       g_clear_object (&etfci->combined_header);
+       g_clear_pointer (&etfci->font_desc, pango_font_description_free);
 
        g_free (etfci->dnd_code);
        etfci->dnd_code = NULL;
@@ -472,9 +467,7 @@ etfci_unrealize (GnomeCanvasItem *item)
 {
        ETableFieldChooserItem *etfci = E_TABLE_FIELD_CHOOSER_ITEM (item);
 
-       if (etfci->font_desc)
-               pango_font_description_free (etfci->font_desc);
-       etfci->font_desc = NULL;
+       g_clear_pointer (&etfci->font_desc, pango_font_description_free);
 
        g_signal_handler_disconnect (item->canvas, etfci->drag_end_id);
        etfci->drag_end_id = 0;
diff --git a/src/e-util/e-table-field-chooser.c b/src/e-util/e-table-field-chooser.c
index 3dfe57c9e2..65bd7b324d 100644
--- a/src/e-util/e-table-field-chooser.c
+++ b/src/e-util/e-table-field-chooser.c
@@ -241,13 +241,8 @@ e_table_field_chooser_dispose (GObject *object)
        g_free (etfc->dnd_code);
        etfc->dnd_code = NULL;
 
-       if (etfc->full_header)
-               g_object_unref (etfc->full_header);
-       etfc->full_header = NULL;
-
-       if (etfc->header)
-               g_object_unref (etfc->header);
-       etfc->header = NULL;
+       g_clear_object (&etfc->full_header);
+       g_clear_object (&etfc->header);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_table_field_chooser_parent_class)->dispose (object);
diff --git a/src/e-util/e-table-group-container.c b/src/e-util/e-table-group-container.c
index 717605c56d..d4f0ec18dd 100644
--- a/src/e-util/e-table-group-container.c
+++ b/src/e-util/e-table-group-container.c
@@ -103,21 +103,10 @@ etgc_dispose (GObject *object)
        if (etgc->children)
                e_table_group_container_list_free (etgc);
 
-       if (etgc->font_desc)
-               pango_font_description_free (etgc->font_desc);
-       etgc->font_desc = NULL;
-
-       if (etgc->ecol)
-               g_object_unref (etgc->ecol);
-       etgc->ecol = NULL;
-
-       if (etgc->sort_info)
-               g_object_unref (etgc->sort_info);
-       etgc->sort_info = NULL;
-
-       if (etgc->selection_model)
-               g_object_unref (etgc->selection_model);
-       etgc->selection_model = NULL;
+       g_clear_pointer (&etgc->font_desc, pango_font_description_free);
+       g_clear_object (&etgc->ecol);
+       g_clear_object (&etgc->sort_info);
+       g_clear_object (&etgc->selection_model);
 
        if (etgc->rect)
                g_object_run_dispose (G_OBJECT (etgc->rect));
@@ -1500,9 +1489,7 @@ e_table_group_container_reset (EPrintable *ep,
                                ETGCPrintContext *groupcontext)
 {
        groupcontext->child = groupcontext->etgc->children;
-       if (groupcontext->child_printable)
-               g_object_unref (groupcontext->child_printable);
-       groupcontext->child_printable = NULL;
+       g_clear_object (&groupcontext->child_printable);
 }
 
 static gdouble
diff --git a/src/e-util/e-table-group-leaf.c b/src/e-util/e-table-group-leaf.c
index dc5710e0d1..5f58aff3de 100644
--- a/src/e-util/e-table-group-leaf.c
+++ b/src/e-util/e-table-group-leaf.c
@@ -71,10 +71,7 @@ etgl_dispose (GObject *object)
 {
        ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (object);
 
-       if (etgl->ets) {
-               g_object_unref (etgl->ets);
-               etgl->ets = NULL;
-       }
+       g_clear_object (&etgl->ets);
 
        if (etgl->item) {
                if (etgl->etgl_cursor_change_id != 0)
@@ -120,10 +117,7 @@ etgl_dispose (GObject *object)
                etgl->item = NULL;
        }
 
-       if (etgl->selection_model) {
-               g_object_unref (etgl->selection_model);
-               etgl->selection_model = NULL;
-       }
+       g_clear_object (&etgl->selection_model);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_table_group_leaf_parent_class)->dispose (object);
diff --git a/src/e-util/e-table-group.c b/src/e-util/e-table-group.c
index e95c5d517f..36e41419e4 100644
--- a/src/e-util/e-table-group.c
+++ b/src/e-util/e-table-group.c
@@ -61,20 +61,9 @@ etg_dispose (GObject *object)
 {
        ETableGroup *table_group = E_TABLE_GROUP (object);
 
-       if (table_group->header) {
-               g_object_unref (table_group->header);
-               table_group->header = NULL;
-       }
-
-       if (table_group->full_header) {
-               g_object_unref (table_group->full_header);
-               table_group->full_header = NULL;
-       }
-
-       if (table_group->model) {
-               g_object_unref (table_group->model);
-               table_group->model = NULL;
-       }
+       g_clear_object (&table_group->header);
+       g_clear_object (&table_group->full_header);
+       g_clear_object (&table_group->model);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_table_group_parent_class)->dispose (object);
diff --git a/src/e-util/e-table-header-item.c b/src/e-util/e-table-header-item.c
index 5b0d0342d8..3d6f33f23c 100644
--- a/src/e-util/e-table-header-item.c
+++ b/src/e-util/e-table-header-item.c
@@ -105,15 +105,8 @@ ethi_dispose (GObject *object)
 
        scroll_off (ethi);
 
-       if (ethi->resize_cursor) {
-               g_object_unref (ethi->resize_cursor);
-               ethi->resize_cursor = NULL;
-       }
-
-       if (ethi->dnd_code) {
-               g_free (ethi->dnd_code);
-               ethi->dnd_code = NULL;
-       }
+       g_clear_object (&ethi->resize_cursor);
+       g_clear_pointer (&ethi->dnd_code, g_free);
 
        if (ethi->sort_info) {
                if (ethi->sort_info_changed_id)
@@ -126,17 +119,13 @@ ethi_dispose (GObject *object)
                ethi->sort_info = NULL;
        }
 
-       if (ethi->full_header)
-               g_object_unref (ethi->full_header);
-       ethi->full_header = NULL;
+       g_clear_object (&ethi->full_header);
 
        if (ethi->etfcd.widget)
                g_object_remove_weak_pointer (
                        G_OBJECT (ethi->etfcd.widget), &ethi->etfcd.pointer);
 
-       if (ethi->config)
-               g_object_unref (ethi->config);
-       ethi->config = NULL;
+       g_clear_object (&ethi->config);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (ethi_parent_class)->dispose (object);
@@ -989,10 +978,7 @@ ethi_unrealize (GnomeCanvasItem *item)
 {
        ETableHeaderItem *ethi = E_TABLE_HEADER_ITEM (item);
 
-       if (ethi->font_desc != NULL) {
-               pango_font_description_free (ethi->font_desc);
-               ethi->font_desc = NULL;
-       }
+       g_clear_pointer (&ethi->font_desc, pango_font_description_free);
 
        g_signal_handlers_disconnect_by_func (item->canvas, G_CALLBACK (ethi_style_updated_cb), ethi);
 
diff --git a/src/e-util/e-table-item.c b/src/e-util/e-table-item.c
index 8184551bbd..a6b648776e 100644
--- a/src/e-util/e-table-item.c
+++ b/src/e-util/e-table-item.c
@@ -756,9 +756,7 @@ free_height_cache (ETableItem *eti)
        item = GNOME_CANVAS_ITEM (eti);
 
        if (item->flags & GNOME_CANVAS_ITEM_REALIZED) {
-               if (eti->height_cache)
-                       g_free (eti->height_cache);
-               eti->height_cache = NULL;
+               g_clear_pointer (&eti->height_cache, g_free);
                eti->height_cache_idle_count = 0;
                eti->uniform_row_height_cache = -1;
 
@@ -1594,9 +1592,7 @@ eti_dispose (GObject *object)
                eti->cursor_idle_id = 0;
        }
 
-       if (eti->height_cache)
-               g_free (eti->height_cache);
-       eti->height_cache = NULL;
+       g_clear_pointer (&eti->height_cache, g_free);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_table_item_parent_class)->dispose (object);
@@ -1870,9 +1866,7 @@ eti_unrealize (GnomeCanvasItem *item)
                eti->height_cache_idle_id = 0;
        }
 
-       if (eti->height_cache)
-               g_free (eti->height_cache);
-       eti->height_cache = NULL;
+       g_clear_pointer (&eti->height_cache, g_free);
        eti->height_cache_idle_count = 0;
 
        eti_unrealize_cell_views (eti);
diff --git a/src/e-util/e-table-selection-model.c b/src/e-util/e-table-selection-model.c
index ecd591be36..6b0bf266a6 100644
--- a/src/e-util/e-table-selection-model.c
+++ b/src/e-util/e-table-selection-model.c
@@ -55,13 +55,8 @@ save_to_hash (gint model_row,
 static void
 free_hash (ETableSelectionModel *etsm)
 {
-       if (etsm->hash) {
-               g_hash_table_destroy (etsm->hash);
-               etsm->hash = NULL;
-       }
-       if (etsm->cursor_id)
-               g_free (etsm->cursor_id);
-       etsm->cursor_id = NULL;
+       g_clear_pointer (&etsm->hash, g_hash_table_destroy);
+       g_clear_pointer (&etsm->cursor_id, g_free);
 }
 
 static void
diff --git a/src/e-util/e-table-sorted-variable.c b/src/e-util/e-table-sorted-variable.c
index 8352d475ac..9df28c857c 100644
--- a/src/e-util/e-table-sorted-variable.c
+++ b/src/e-util/e-table-sorted-variable.c
@@ -64,13 +64,8 @@ etsv_dispose (GObject *object)
                etsv->insert_idle_id = 0;
        }
 
-       if (etsv->sort_info)
-               g_object_unref (etsv->sort_info);
-       etsv->sort_info = NULL;
-
-       if (etsv->full_header)
-               g_object_unref (etsv->full_header);
-       etsv->full_header = NULL;
+       g_clear_object (&etsv->sort_info);
+       g_clear_object (&etsv->full_header);
 
        G_OBJECT_CLASS (e_table_sorted_variable_parent_class)->dispose (object);
 }
diff --git a/src/e-util/e-table-sorted.c b/src/e-util/e-table-sorted.c
index 10cf8fabe0..9d20c02eb6 100644
--- a/src/e-util/e-table-sorted.c
+++ b/src/e-util/e-table-sorted.c
@@ -65,9 +65,7 @@ ets_dispose (GObject *object)
                ets->sort_info = NULL;
        }
 
-       if (ets->full_header)
-               g_object_unref (ets->full_header);
-       ets->full_header = NULL;
+       g_clear_object (&ets->full_header);
 
        G_OBJECT_CLASS (e_table_sorted_parent_class)->dispose (object);
 }
diff --git a/src/e-util/e-table.c b/src/e-util/e-table.c
index 9fe67fae66..fb9994bcde 100644
--- a/src/e-util/e-table.c
+++ b/src/e-util/e-table.c
@@ -375,35 +375,12 @@ et_dispose (GObject *object)
 
        disconnect_header (et);
 
-       if (et->model) {
-               g_object_unref (et->model);
-               et->model = NULL;
-       }
-
-       if (et->full_header) {
-               g_object_unref (et->full_header);
-               et->full_header = NULL;
-       }
-
-       if (et->sort_info) {
-               g_object_unref (et->sort_info);
-               et->sort_info = NULL;
-       }
-
-       if (et->sorter) {
-               g_object_unref (et->sorter);
-               et->sorter = NULL;
-       }
-
-       if (et->selection) {
-               g_object_unref (et->selection);
-               et->selection = NULL;
-       }
-
-       if (et->spec) {
-               g_object_unref (et->spec);
-               et->spec = NULL;
-       }
+       g_clear_object (&et->model);
+       g_clear_object (&et->full_header);
+       g_clear_object (&et->sort_info);
+       g_clear_object (&et->sorter);
+       g_clear_object (&et->selection);
+       g_clear_object (&et->spec);
 
        if (et->header_canvas != NULL) {
                gtk_widget_destroy (GTK_WIDGET (et->header_canvas));
diff --git a/src/e-util/e-text.c b/src/e-util/e-text.c
index 4a0072195b..4fc0f6f4a3 100644
--- a/src/e-util/e-text.c
+++ b/src/e-util/e-text.c
@@ -181,9 +181,7 @@ e_text_dispose (GObject *object)
                        text->model_repos_signal_id);
        text->model_repos_signal_id = 0;
 
-       if (text->model)
-               g_object_unref (text->model);
-       text->model = NULL;
+       g_clear_object (&text->model);
 
        if (text->tep_command_id)
                g_signal_handler_disconnect (
@@ -191,9 +189,7 @@ e_text_dispose (GObject *object)
                        text->tep_command_id);
        text->tep_command_id = 0;
 
-       if (text->tep)
-               g_object_unref (text->tep);
-       text->tep = NULL;
+       g_clear_object (&text->tep);
 
        g_free (text->revert);
        text->revert = NULL;
@@ -219,10 +215,7 @@ e_text_dispose (GObject *object)
                text->tpl_timeout = 0;
        }
 
-       if (text->layout) {
-               g_object_unref (text->layout);
-               text->layout = NULL;
-       }
+       g_clear_object (&text->layout);
 
        if (text->im_context) {
                disconnect_im_context (text);
@@ -230,10 +223,7 @@ e_text_dispose (GObject *object)
                text->im_context = NULL;
        }
 
-       if (text->font_desc) {
-               pango_font_description_free (text->font_desc);
-               text->font_desc = NULL;
-       }
+       g_clear_pointer (&text->font_desc, pango_font_description_free);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_text_parent_class)->dispose (object);
@@ -290,8 +280,7 @@ insert_preedit_text (EText *text)
        } else
                text->preedit_len = 0;
 
-       if (preedit_string)
-               g_free (preedit_string);
+       g_free (preedit_string);
        if (preedit_attrs)
                pango_attr_list_unref (preedit_attrs);
        if (tmp_string)
@@ -797,8 +786,7 @@ e_text_set_property (GObject *object,
                break;
 
        case PROP_ELLIPSIS:
-               if (text->ellipsis)
-                       g_free (text->ellipsis);
+               g_free (text->ellipsis);
 
                text->ellipsis = g_strdup (g_value_get_string (value));
                calc_ellipsis (text);
@@ -819,10 +807,7 @@ e_text_set_property (GObject *object,
                break;
 
        case PROP_BREAK_CHARACTERS:
-               if (text->break_characters) {
-                       g_free (text->break_characters);
-                       text->break_characters = NULL;
-               }
+               g_clear_pointer (&text->break_characters, g_free);
                if (g_value_get_string (value))
                        text->break_characters = g_strdup (g_value_get_string (value));
                text->needs_split_into_lines = 1;
@@ -2316,8 +2301,7 @@ _get_updated_position (EText *text,
                }
        }
 
-       if (log_attrs)
-               g_free (log_attrs);
+       g_free (log_attrs);
 
        return new_pos;
 }
diff --git a/src/e-util/e-timezone-dialog.c b/src/e-util/e-timezone-dialog.c
index 533947b30d..3a8edae1a3 100644
--- a/src/e-util/e-timezone-dialog.c
+++ b/src/e-util/e-timezone-dialog.c
@@ -150,25 +150,15 @@ e_timezone_dialog_dispose (GObject *object)
        priv = E_TIMEZONE_DIALOG_GET_PRIVATE (object);
 
        /* Destroy the actual dialog. */
-       if (priv->app != NULL) {
-               gtk_widget_destroy (priv->app);
-               priv->app = NULL;
-       }
+       g_clear_pointer (&priv->app, gtk_widget_destroy);
 
        if (priv->timeout_id) {
                g_source_remove (priv->timeout_id);
                priv->timeout_id = 0;
        }
 
-       if (priv->builder) {
-               g_object_unref (priv->builder);
-               priv->builder = NULL;
-       }
-
-       if (priv->index) {
-               g_hash_table_destroy (priv->index);
-               priv->index = NULL;
-       }
+       g_clear_object (&priv->builder);
+       g_clear_pointer (&priv->index, g_hash_table_destroy);
 
        g_slist_free_full (priv->custom_zones, g_object_unref);
        priv->custom_zones = NULL;
diff --git a/src/e-util/e-tree.c b/src/e-util/e-tree.c
index a701813e28..be9f0a9d59 100644
--- a/src/e-util/e-tree.c
+++ b/src/e-util/e-tree.c
@@ -449,32 +449,14 @@ et_dispose (GObject *object)
 
        et_disconnect_from_etta (E_TREE (object));
 
-       if (priv->etta != NULL) {
-               g_object_unref (priv->etta);
-               priv->etta = NULL;
-       }
-
-       if (priv->model != NULL) {
-               g_object_unref (priv->model);
-               priv->model = NULL;
-       }
-
-       if (priv->full_header != NULL) {
-               g_object_unref (priv->full_header);
-               priv->full_header = NULL;
-       }
+       g_clear_object (&priv->etta);
+       g_clear_object (&priv->model);
+       g_clear_object (&priv->full_header);
 
        disconnect_header (E_TREE (object));
 
-       if (priv->selection != NULL) {
-               g_object_unref (priv->selection);
-               priv->selection = NULL;
-       }
-
-       if (priv->spec != NULL) {
-               g_object_unref (priv->spec);
-               priv->spec = NULL;
-       }
+       g_clear_object (&priv->selection);
+       g_clear_object (&priv->spec);
 
        if (priv->header_canvas != NULL) {
                gtk_widget_destroy (GTK_WIDGET (priv->header_canvas));
diff --git a/src/e-util/e-web-view.c b/src/e-util/e-web-view.c
index 9892dba1e6..6911b1fb0d 100644
--- a/src/e-util/e-web-view.c
+++ b/src/e-util/e-web-view.c
@@ -1160,10 +1160,7 @@ web_view_finalize (GObject *object)
        while (!g_queue_is_empty (&priv->highlights))
                g_free (g_queue_pop_head (&priv->highlights));
 
-       if (priv->old_settings) {
-               g_hash_table_destroy (priv->old_settings);
-               priv->old_settings = NULL;
-       }
+       g_clear_pointer (&priv->old_settings, g_hash_table_destroy);
 
        g_hash_table_destroy (priv->element_clicked_cbs);
 
diff --git a/src/e-util/ea-cell-table.c b/src/e-util/ea-cell-table.c
index c1ee3743ab..f6e746e78f 100644
--- a/src/e-util/ea-cell-table.c
+++ b/src/e-util/ea-cell-table.c
@@ -60,13 +60,13 @@ ea_cell_table_destroy (EaCellTable *cell_data)
        g_return_if_fail (cell_data);
 
        for (index = 0; index < cell_data->columns; ++index)
-               if (cell_data->column_labels[index])
-                       g_free (cell_data->column_labels[index]);
+               g_free (cell_data->column_labels[index]);
+
        g_free (cell_data->column_labels);
 
        for (index = 0; index < cell_data->rows; ++index)
-               if (cell_data->row_labels[index])
-                       g_free (cell_data->row_labels[index]);
+               g_free (cell_data->row_labels[index]);
+
        g_free (cell_data->row_labels);
 
        for (index = (cell_data->columns * cell_data->rows) -1;
@@ -168,8 +168,7 @@ ea_cell_table_set_column_label (EaCellTable *cell_data,
        g_return_if_fail (cell_data);
        g_return_if_fail ((column >= 0 && column < cell_data->columns));
 
-       if (cell_data->column_labels[column])
-               g_free (cell_data->column_labels[column]);
+       g_free (cell_data->column_labels[column]);
        cell_data->column_labels[column] = g_strdup (label);
 }
 
@@ -191,8 +190,7 @@ ea_cell_table_set_row_label (EaCellTable *cell_data,
        g_return_if_fail (cell_data);
        g_return_if_fail ((row >= 0 && row < cell_data->rows));
 
-       if (cell_data->row_labels[row])
-               g_free (cell_data->row_labels[row]);
+       g_free (cell_data->row_labels[row]);
        cell_data->row_labels[row] = g_strdup (label);
 }
 
diff --git a/src/e-util/evolution-source-viewer.c b/src/e-util/evolution-source-viewer.c
index d5a355b344..a8e10de6f5 100644
--- a/src/e-util/evolution-source-viewer.c
+++ b/src/e-util/evolution-source-viewer.c
@@ -581,17 +581,11 @@ source_viewer_dispose (GObject *object)
                viewer->registry = NULL;
        }
 
-       if (viewer->tree_store != NULL) {
-               g_object_unref (viewer->tree_store);
-               viewer->tree_store = NULL;
-       }
+       g_clear_object (&viewer->tree_store);
 
        g_hash_table_remove_all (viewer->source_index);
 
-       if (viewer->delete_operation != NULL) {
-               g_object_unref (viewer->delete_operation);
-               viewer->delete_operation = NULL;
-       }
+       g_clear_object (&viewer->delete_operation);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_source_viewer_parent_class)->dispose (object);
diff --git a/src/e-util/gal-a11y-e-cell-vbox.c b/src/e-util/gal-a11y-e-cell-vbox.c
index bdec15ce65..bc7c900898 100644
--- a/src/e-util/gal-a11y-e-cell-vbox.c
+++ b/src/e-util/gal-a11y-e-cell-vbox.c
@@ -109,8 +109,7 @@ static void
 ecv_dispose (GObject *object)
 {
        GalA11yECellVbox *gaev = GAL_A11Y_E_CELL_VBOX (object);
-       if (gaev->a11y_subcells)
-               g_free (gaev->a11y_subcells);
+       g_free (gaev->a11y_subcells);
 
        if (parent_class->dispose)
                parent_class->dispose (object);
diff --git a/src/e-util/gal-a11y-e-cell.c b/src/e-util/gal-a11y-e-cell.c
index 3d5b0239ea..86c787d5d8 100644
--- a/src/e-util/gal-a11y-e-cell.c
+++ b/src/e-util/gal-a11y-e-cell.c
@@ -93,10 +93,7 @@ gal_a11y_e_cell_dispose (GObject *object)
                g_object_unref (a11y->parent);
 #endif
 
-       if (a11y->state_set) {
-               g_object_unref (a11y->state_set);
-               a11y->state_set = NULL;
-       }
+       g_clear_object (&a11y->state_set);
 
        if (a11y->action_list) {
                g_list_foreach (a11y->action_list, _gal_a11y_e_cell_destroy_action_info, NULL);
diff --git a/src/e-util/gal-a11y-e-table-column-header.c b/src/e-util/gal-a11y-e-table-column-header.c
index 18ff0f8d13..d92881b33e 100644
--- a/src/e-util/gal-a11y-e-table-column-header.c
+++ b/src/e-util/gal-a11y-e-table-column-header.c
@@ -78,10 +78,7 @@ gal_a11y_e_table_column_header_dispose (GObject *object)
        GalA11yETableColumnHeader *a11y = GAL_A11Y_E_TABLE_COLUMN_HEADER (object);
        GalA11yETableColumnHeaderPrivate *priv = GET_PRIVATE (a11y);
 
-       if (priv->state_set) {
-               g_object_unref (priv->state_set);
-               priv->state_set = NULL;
-       }
+       g_clear_object (&priv->state_set);
 
        if (parent_class->dispose)
                parent_class->dispose (object);
diff --git a/src/e-util/gal-a11y-e-table-item.c b/src/e-util/gal-a11y-e-table-item.c
index be302ed09d..11eb04740a 100644
--- a/src/e-util/gal-a11y-e-table-item.c
+++ b/src/e-util/gal-a11y-e-table-item.c
@@ -125,11 +125,7 @@ item_finalized (gpointer user_data,
        if (priv->selection)
                gal_a11y_e_table_item_unref_selection (a11y);
 
-       if (priv->columns) {
-               free_columns (priv->columns);
-               priv->columns = NULL;
-       }
-
+       g_clear_pointer (&priv->columns, free_columns);
        g_object_unref (a11y);
 }
 
@@ -334,10 +330,7 @@ eti_dispose (GObject *object)
        GHashTableIter iter;
        gpointer key, value;
 
-       if (priv->columns) {
-               free_columns (priv->columns);
-               priv->columns = NULL;
-       }
+       g_clear_pointer (&priv->columns, free_columns);
 
        if (priv->item) {
                g_object_weak_unref (G_OBJECT (priv->item), item_finalized, a11y);
diff --git a/src/e-util/gal-view-instance-save-as-dialog.c b/src/e-util/gal-view-instance-save-as-dialog.c
index f6cbcfd419..0972b5d148 100644
--- a/src/e-util/gal-view-instance-save-as-dialog.c
+++ b/src/e-util/gal-view-instance-save-as-dialog.c
@@ -209,9 +209,7 @@ gal_view_instance_save_as_dialog_dispose (GObject *object)
 {
        GalViewInstanceSaveAsDialog *gal_view_instance_save_as_dialog = GAL_VIEW_INSTANCE_SAVE_AS_DIALOG 
(object);
 
-       if (gal_view_instance_save_as_dialog->builder)
-               g_object_unref (gal_view_instance_save_as_dialog->builder);
-       gal_view_instance_save_as_dialog->builder = NULL;
+       g_clear_object (&gal_view_instance_save_as_dialog->builder);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (gal_view_instance_save_as_dialog_parent_class)->dispose (object);
diff --git a/src/e-util/test-keyfile-settings-backend.c b/src/e-util/test-keyfile-settings-backend.c
index b24a22b273..cdcf661e0f 100644
--- a/src/e-util/test-keyfile-settings-backend.c
+++ b/src/e-util/test-keyfile-settings-backend.c
@@ -223,11 +223,7 @@ test_keyfile_settings_backend_finalize (GObject *object)
        TestKeyfileSettingsBackend *tk_backend = TEST_KEYFILE_SETTINGS_BACKEND (object);
 
        g_clear_object (&tk_backend->kf_backend);
-
-       if (tk_backend->change_listeners) {
-               g_hash_table_destroy (tk_backend->change_listeners);
-               tk_backend->change_listeners = NULL;
-       }
+       g_clear_pointer (&tk_backend->change_listeners, g_hash_table_destroy);
 
        G_OBJECT_CLASS (test_keyfile_settings_backend_parent_class)->finalize (object);
 }
diff --git a/src/em-format/e-mail-part-list.c b/src/em-format/e-mail-part-list.c
index 9edf8ed1ba..42f29075c6 100644
--- a/src/em-format/e-mail-part-list.c
+++ b/src/em-format/e-mail-part-list.c
@@ -147,16 +147,8 @@ mail_part_list_dispose (GObject *object)
        EMailPartListPrivate *priv;
 
        priv = E_MAIL_PART_LIST_GET_PRIVATE (object);
-
-       if (priv->folder != NULL) {
-               g_object_unref (priv->folder);
-               priv->folder = NULL;
-       }
-
-       if (priv->message != NULL) {
-               g_object_unref (priv->message);
-               priv->message = NULL;
-       }
+       g_clear_object (&priv->folder);
+       g_clear_object (&priv->message);
 
        g_mutex_lock (&priv->queue_lock);
        while (!g_queue_is_empty (&priv->queue))
diff --git a/src/libemail-engine/e-mail-session.c b/src/libemail-engine/e-mail-session.c
index a936fee7b6..8c7d410fc3 100644
--- a/src/libemail-engine/e-mail-session.c
+++ b/src/libemail-engine/e-mail-session.c
@@ -1105,10 +1105,7 @@ mail_session_dispose (GObject *object)
                priv->outbox_changed_handler_id = 0;
        }
 
-       if (priv->folder_cache != NULL) {
-               g_object_unref (priv->folder_cache);
-               priv->folder_cache = NULL;
-       }
+       g_clear_object (&priv->folder_cache);
 
        g_ptr_array_set_size (priv->local_folders, 0);
        g_ptr_array_set_size (priv->local_folder_uris, 0);
@@ -1127,15 +1124,8 @@ mail_session_dispose (GObject *object)
 
        g_mutex_unlock (&priv->preparing_flush_lock);
 
-       if (priv->local_store != NULL) {
-               g_object_unref (priv->local_store);
-               priv->local_store = NULL;
-       }
-
-       if (priv->vfolder_store != NULL) {
-               g_object_unref (priv->vfolder_store);
-               priv->vfolder_store = NULL;
-       }
+       g_clear_object (&priv->local_store);
+       g_clear_object (&priv->vfolder_store);
 
        g_mutex_lock (&priv->archive_folders_hash_lock);
 
diff --git a/src/libemail-engine/e-mail-utils.c b/src/libemail-engine/e-mail-utils.c
index c3cc31c456..70325bb9bd 100644
--- a/src/libemail-engine/e-mail-utils.c
+++ b/src/libemail-engine/e-mail-utils.c
@@ -631,10 +631,7 @@ second_preference:
        /* Second Preference: Choose any enabled mail account whose
         * address appears in the list to To: or Cc: recipients. */
 
-       if (source != NULL) {
-               g_object_unref (source);
-               source = NULL;
-       }
+       g_clear_object (&source);
 
        extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT;
        list = e_source_registry_list_enabled (registry, extension_name);
diff --git a/src/libemail-engine/mail-ops.c b/src/libemail-engine/mail-ops.c
index e77ad8dcc5..3ae85d55cd 100644
--- a/src/libemail-engine/mail-ops.c
+++ b/src/libemail-engine/mail-ops.c
@@ -429,10 +429,7 @@ exit:
        /* we unref this here as it may have more work to do (syncing
         * folders and whatnot) before we are really done */
        /* should this be cancellable too? (i.e. above unregister above) */
-       if (fm->driver) {
-               g_object_unref (fm->driver);
-               fm->driver = NULL;
-       }
+       g_clear_object (&fm->driver);
 
        /* also disconnect if not a local delivery mbox;
         * there is no need to keep the connection alive forever */
@@ -1096,10 +1093,7 @@ send_queue_exec (struct _send_queue_msg *m,
        else
                report_status (m, CAMEL_FILTER_STATUS_END, 100, _("Complete."));
 
-       if (m->driver) {
-               g_object_unref (m->driver);
-               m->driver = NULL;
-       }
+       g_clear_object (&m->driver);
 
        camel_folder_free_uids (m->queue, uids);
        g_ptr_array_free (send_uids, TRUE);
diff --git a/src/libemail-engine/mail-vfolder.c b/src/libemail-engine/mail-vfolder.c
index 3ec3a67d91..0f866e224d 100644
--- a/src/libemail-engine/mail-vfolder.c
+++ b/src/libemail-engine/mail-vfolder.c
@@ -1232,8 +1232,5 @@ mail_vfolder_shutdown (void)
                vfolder_hash = NULL;
        }
 
-       if (context) {
-               g_object_unref (context);
-               context = NULL;
-       }
+       g_clear_object (&context);
 }
diff --git a/src/libgnomecanvas/gnome-canvas-pixbuf.c b/src/libgnomecanvas/gnome-canvas-pixbuf.c
index 796bd8624c..651b302c4b 100644
--- a/src/libgnomecanvas/gnome-canvas-pixbuf.c
+++ b/src/libgnomecanvas/gnome-canvas-pixbuf.c
@@ -115,10 +115,7 @@ gnome_canvas_pixbuf_dispose (GnomeCanvasItem *object)
        gcp = GNOME_CANVAS_PIXBUF (object);
        priv = gcp->priv;
 
-       if (priv->pixbuf != NULL) {
-               g_object_unref (priv->pixbuf);
-               priv->pixbuf = NULL;
-       }
+       g_clear_object (&priv->pixbuf);
 
        if (GNOME_CANVAS_ITEM_CLASS (gnome_canvas_pixbuf_parent_class)->dispose)
                GNOME_CANVAS_ITEM_CLASS (gnome_canvas_pixbuf_parent_class)->dispose (object);
diff --git a/src/libgnomecanvas/gnome-canvas-rect.c b/src/libgnomecanvas/gnome-canvas-rect.c
index f3a5a8789f..a2855fbdd9 100644
--- a/src/libgnomecanvas/gnome-canvas-rect.c
+++ b/src/libgnomecanvas/gnome-canvas-rect.c
@@ -369,11 +369,7 @@ gnome_canvas_rect_dispose (GnomeCanvasItem *object)
        g_return_if_fail (GNOME_IS_CANVAS_RECT (object));
 
        rect = GNOME_CANVAS_RECT (object);
-
-       if (rect->priv->path != NULL) {
-               cairo_path_destroy (rect->priv->path);
-               rect->priv->path = NULL;
-       }
+       g_clear_pointer (&rect->priv->path, cairo_path_destroy);
 
        g_free (rect->priv->dash);
        rect->priv->dash = NULL;
diff --git a/src/libgnomecanvas/gnome-canvas-text.c b/src/libgnomecanvas/gnome-canvas-text.c
index 63de7aed8c..df68def351 100644
--- a/src/libgnomecanvas/gnome-canvas-text.c
+++ b/src/libgnomecanvas/gnome-canvas-text.c
@@ -603,20 +603,9 @@ gnome_canvas_text_dispose (GnomeCanvasItem *object)
        g_free (text->text);
        text->text = NULL;
 
-       if (text->layout != NULL) {
-               g_object_unref (text->layout);
-               text->layout = NULL;
-       }
-
-       if (text->font_desc != NULL) {
-               pango_font_description_free (text->font_desc);
-               text->font_desc = NULL;
-       }
-
-       if (text->attr_list != NULL) {
-               pango_attr_list_unref (text->attr_list);
-               text->attr_list = NULL;
-       }
+       g_clear_object (&text->layout);
+       g_clear_pointer (&text->font_desc, pango_font_description_free);
+       g_clear_pointer (&text->attr_list, pango_attr_list_unref);
 
        GNOME_CANVAS_ITEM_CLASS (gnome_canvas_text_parent_class)->
                dispose (object);
diff --git a/src/mail/e-mail-account-store.c b/src/mail/e-mail-account-store.c
index b7a8b7485b..6c9dbf9995 100644
--- a/src/mail/e-mail-account-store.c
+++ b/src/mail/e-mail-account-store.c
@@ -522,10 +522,7 @@ mail_account_store_dispose (GObject *object)
                priv->session = NULL;
        }
 
-       if (priv->default_service != NULL) {
-               g_object_unref (priv->default_service);
-               priv->default_service = NULL;
-       }
+       g_clear_object (&priv->default_service);
 
        g_hash_table_remove_all (priv->service_index);
 
diff --git a/src/mail/e-mail-config-assistant.c b/src/mail/e-mail-config-assistant.c
index 0c8da3c015..e5d255675d 100644
--- a/src/mail/e-mail-config-assistant.c
+++ b/src/mail/e-mail-config-assistant.c
@@ -636,41 +636,13 @@ mail_config_assistant_dispose (GObject *object)
        EMailConfigAssistantPrivate *priv;
 
        priv = E_MAIL_CONFIG_ASSISTANT_GET_PRIVATE (object);
-
-       if (priv->session != NULL) {
-               g_object_unref (priv->session);
-               priv->session = NULL;
-       }
-
-       if (priv->identity_source != NULL) {
-               g_object_unref (priv->identity_source);
-               priv->identity_source = NULL;
-       }
-
-       if (priv->receiving_page != NULL) {
-               g_object_unref (priv->receiving_page);
-               priv->receiving_page = NULL;
-       }
-
-       if (priv->sending_page != NULL) {
-               g_object_unref (priv->sending_page);
-               priv->sending_page = NULL;
-       }
-
-       if (priv->summary_page != NULL) {
-               g_object_unref (priv->summary_page);
-               priv->summary_page = NULL;
-       }
-
-       if (priv->lookup_page != NULL) {
-               g_object_unref (priv->lookup_page);
-               priv->lookup_page = NULL;
-       }
-
-       if (priv->identity_page != NULL) {
-               g_object_unref (priv->identity_page);
-               priv->identity_page = NULL;
-       }
+       g_clear_object (&priv->session);
+       g_clear_object (&priv->identity_source);
+       g_clear_object (&priv->receiving_page);
+       g_clear_object (&priv->sending_page);
+       g_clear_object (&priv->summary_page);
+       g_clear_object (&priv->lookup_page);
+       g_clear_object (&priv->identity_page);
 
        g_ptr_array_set_size (priv->account_sources, 0);
        g_ptr_array_set_size (priv->transport_sources, 0);
diff --git a/src/mail/e-mail-config-provider-page.c b/src/mail/e-mail-config-provider-page.c
index 20d8164ede..d65f37db7d 100644
--- a/src/mail/e-mail-config-provider-page.c
+++ b/src/mail/e-mail-config-provider-page.c
@@ -694,11 +694,7 @@ mail_config_provider_page_dispose (GObject *object)
        EMailConfigProviderPagePrivate *priv;
 
        priv = E_MAIL_CONFIG_PROVIDER_PAGE_GET_PRIVATE (object);
-
-       if (priv->backend != NULL) {
-               g_object_unref (priv->backend);
-               priv->backend = NULL;
-       }
+       g_clear_object (&priv->backend);
 
        /* Chain up parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_config_provider_page_parent_class)->
diff --git a/src/mail/e-mail-config-security-page.c b/src/mail/e-mail-config-security-page.c
index 55f5530a07..0db9cccc4b 100644
--- a/src/mail/e-mail-config-security-page.c
+++ b/src/mail/e-mail-config-security-page.c
@@ -174,11 +174,7 @@ mail_config_security_page_dispose (GObject *object)
        EMailConfigSecurityPagePrivate *priv;
 
        priv = E_MAIL_CONFIG_SECURITY_PAGE_GET_PRIVATE (object);
-
-       if (priv->identity_source != NULL) {
-               g_object_unref (priv->identity_source);
-               priv->identity_source = NULL;
-       }
+       g_clear_object (&priv->identity_source);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_config_security_page_parent_class)->
diff --git a/src/mail/e-mail-config-service-backend.c b/src/mail/e-mail-config-service-backend.c
index 83c5305a0c..e6b84b7485 100644
--- a/src/mail/e-mail-config-service-backend.c
+++ b/src/mail/e-mail-config-service-backend.c
@@ -121,16 +121,8 @@ mail_config_service_backend_dispose (GObject *object)
        EMailConfigServiceBackendPrivate *priv;
 
        priv = E_MAIL_CONFIG_SERVICE_BACKEND_GET_PRIVATE (object);
-
-       if (priv->source != NULL) {
-               g_object_unref (priv->source);
-               priv->source = NULL;
-       }
-
-       if (priv->collection != NULL) {
-               g_object_unref (priv->collection);
-               priv->collection = NULL;
-       }
+       g_clear_object (&priv->source);
+       g_clear_object (&priv->collection);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_config_service_backend_parent_class)->
diff --git a/src/mail/e-mail-config-service-notebook.c b/src/mail/e-mail-config-service-notebook.c
index 0591554832..fd7a592e6d 100644
--- a/src/mail/e-mail-config-service-notebook.c
+++ b/src/mail/e-mail-config-service-notebook.c
@@ -173,11 +173,7 @@ mail_config_service_notebook_dispose (GObject *object)
        EMailConfigServiceNotebookPrivate *priv;
 
        priv = E_MAIL_CONFIG_SERVICE_NOTEBOOK_GET_PRIVATE (object);
-
-       if (priv->active_backend != NULL) {
-               g_object_unref (priv->active_backend);
-               priv->active_backend = NULL;
-       }
+       g_clear_object (&priv->active_backend);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_config_service_notebook_parent_class)->
diff --git a/src/mail/e-mail-config-service-page.c b/src/mail/e-mail-config-service-page.c
index be37dcc4ed..9b97d7a5d8 100644
--- a/src/mail/e-mail-config-service-page.c
+++ b/src/mail/e-mail-config-service-page.c
@@ -381,25 +381,14 @@ mail_config_service_page_dispose (GObject *object)
        EMailConfigServicePagePrivate *priv;
 
        priv = E_MAIL_CONFIG_SERVICE_PAGE_GET_PRIVATE (object);
-
-       if (priv->registry != NULL) {
-               g_object_unref (priv->registry);
-               priv->registry = NULL;
-       }
-
-       if (priv->active_backend != NULL) {
-               g_object_unref (priv->active_backend);
-               priv->active_backend = NULL;
-       }
+       g_clear_object (&priv->registry);
+       g_clear_object (&priv->active_backend);
 
        g_hash_table_remove_all (priv->backends);
        g_ptr_array_set_size (priv->candidates, 0);
        g_ptr_array_set_size (priv->hidden_candidates, 0);
 
-       if (priv->list_store != NULL) {
-               g_object_unref (priv->list_store);
-               priv->list_store = NULL;
-       }
+       g_clear_object (&priv->list_store);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_config_service_page_parent_class)->dispose (object);
diff --git a/src/mail/e-mail-config-summary-page.c b/src/mail/e-mail-config-summary-page.c
index 20c669ad65..a3b509d732 100644
--- a/src/mail/e-mail-config-summary-page.c
+++ b/src/mail/e-mail-config-summary-page.c
@@ -267,15 +267,8 @@ mail_config_summary_page_dispose (GObject *object)
                priv->transport_source_changed_id = 0;
        }
 
-       if (priv->account_backend != NULL) {
-               g_object_unref (priv->account_backend);
-               priv->account_backend = NULL;
-       }
-
-       if (priv->transport_backend != NULL) {
-               g_object_unref (priv->transport_backend);
-               priv->transport_backend = NULL;
-       }
+       g_clear_object (&priv->account_backend);
+       g_clear_object (&priv->transport_backend);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_config_summary_page_parent_class)->
@@ -941,10 +934,7 @@ e_mail_config_summary_page_set_identity_source (EMailConfigSummaryPage *page,
        page->priv->identity_source = identity_source;
        page->priv->identity_source_changed_id = 0;
 
-       if (page->priv->account_name_binding) {
-               g_binding_unbind (page->priv->account_name_binding);
-               page->priv->account_name_binding = NULL;
-       }
+       g_clear_pointer (&page->priv->account_name_binding, g_binding_unbind);
 
        if (identity_source != NULL) {
                gulong handler_id;
diff --git a/src/mail/e-mail-config-window.c b/src/mail/e-mail-config-window.c
index 568847eb11..e6641f977b 100644
--- a/src/mail/e-mail-config-window.c
+++ b/src/mail/e-mail-config-window.c
@@ -273,36 +273,12 @@ mail_config_window_dispose (GObject *object)
        EMailConfigWindowPrivate *priv;
 
        priv = E_MAIL_CONFIG_WINDOW_GET_PRIVATE (object);
-
-       if (priv->session != NULL) {
-               g_object_unref (priv->session);
-               priv->session = NULL;
-       }
-
-       if (priv->original_source != NULL) {
-               g_object_unref (priv->original_source);
-               priv->original_source = NULL;
-       }
-
-       if (priv->account_source != NULL) {
-               g_object_unref (priv->account_source);
-               priv->account_source = NULL;
-       }
-
-       if (priv->identity_source != NULL) {
-               g_object_unref (priv->identity_source);
-               priv->identity_source = NULL;
-       }
-
-       if (priv->transport_source != NULL) {
-               g_object_unref (priv->transport_source);
-               priv->transport_source = NULL;
-       }
-
-       if (priv->collection_source != NULL) {
-               g_object_unref (priv->collection_source);
-               priv->collection_source = NULL;
-       }
+       g_clear_object (&priv->session);
+       g_clear_object (&priv->original_source);
+       g_clear_object (&priv->account_source);
+       g_clear_object (&priv->identity_source);
+       g_clear_object (&priv->transport_source);
+       g_clear_object (&priv->collection_source);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_config_window_parent_class)->dispose (object);
diff --git a/src/mail/e-mail-display.c b/src/mail/e-mail-display.c
index 8ac3a3f72d..6d5ebfd36b 100644
--- a/src/mail/e-mail-display.c
+++ b/src/mail/e-mail-display.c
@@ -1511,18 +1511,10 @@ mail_display_finalize (GObject *object)
        EMailDisplayPrivate *priv;
 
        priv = E_MAIL_DISPLAY_GET_PRIVATE (object);
-
-       if (priv->old_settings) {
-               g_hash_table_destroy (priv->old_settings);
-               priv->old_settings = NULL;
-       }
+       g_clear_pointer (&priv->old_settings, g_hash_table_destroy);
 
        g_mutex_lock (&priv->remote_content_lock);
-       if (priv->skipped_remote_content_sites) {
-               g_hash_table_destroy (priv->skipped_remote_content_sites);
-               priv->skipped_remote_content_sites = NULL;
-       }
-
+       g_clear_pointer (&priv->skipped_remote_content_sites, g_hash_table_destroy);
        g_hash_table_destroy (priv->attachment_flags);
        g_clear_object (&priv->remote_content);
        g_mutex_unlock (&priv->remote_content_lock);
diff --git a/src/mail/e-mail-folder-sort-order-dialog.c b/src/mail/e-mail-folder-sort-order-dialog.c
index 24d3958a58..f46cd747bf 100644
--- a/src/mail/e-mail-folder-sort-order-dialog.c
+++ b/src/mail/e-mail-folder-sort-order-dialog.c
@@ -234,15 +234,8 @@ sort_order_tree_finish_drag (EMailFolderSortOrderDialog *dialog,
                dialog->priv->autoscroll_id = 0;
        }
 
-       if (dialog->priv->drag_row) {
-               gtk_tree_row_reference_free (dialog->priv->drag_row);
-               dialog->priv->drag_row = NULL;
-       }
-
-       if (dialog->priv->drag_state) {
-               g_hash_table_destroy (dialog->priv->drag_state);
-               dialog->priv->drag_state = NULL;
-       }
+       g_clear_pointer (&dialog->priv->drag_row, gtk_tree_row_reference_free);
+       g_clear_pointer (&dialog->priv->drag_state, g_hash_table_destroy);
 }
 
 #define SCROLL_EDGE_SIZE 15
@@ -782,10 +775,7 @@ e_mail_folder_sort_order_dialog_dispose (GObject *object)
                dialog->priv->autoscroll_id = 0;
        }
 
-       if (dialog->priv->drag_row) {
-               gtk_tree_row_reference_free (dialog->priv->drag_row);
-               dialog->priv->drag_row = NULL;
-       }
+       g_clear_pointer (&dialog->priv->drag_row, gtk_tree_row_reference_free);
 
        /* Chain up to parent's method. */
        G_OBJECT_CLASS (e_mail_folder_sort_order_dialog_parent_class)->dispose (object);
diff --git a/src/mail/e-mail-junk-options.c b/src/mail/e-mail-junk-options.c
index 43975567e3..624eb10246 100644
--- a/src/mail/e-mail-junk-options.c
+++ b/src/mail/e-mail-junk-options.c
@@ -131,10 +131,7 @@ mail_junk_options_rebuild (EMailJunkOptions *options)
        /* Remove the GtkComboBox:active-id binding so it doesn't
         * affect EMailSession:junk-filter-name when we clear the
         * combo box's list model. */
-       if (options->priv->active_id_binding != NULL) {
-               g_object_unref (options->priv->active_id_binding);
-               options->priv->active_id_binding = NULL;
-       }
+       g_clear_object (&options->priv->active_id_binding);
 
        model = gtk_combo_box_get_model (combo_box);
        gtk_list_store_clear (GTK_LIST_STORE (model));
@@ -248,11 +245,7 @@ mail_junk_options_dispose (GObject *object)
        EMailJunkOptionsPrivate *priv;
 
        priv = E_MAIL_JUNK_OPTIONS_GET_PRIVATE (object);
-
-       if (priv->session != NULL) {
-               g_object_unref (priv->session);
-               priv->session = NULL;
-       }
+       g_clear_object (&priv->session);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_junk_options_parent_class)->dispose (object);
diff --git a/src/mail/e-mail-label-dialog.c b/src/mail/e-mail-label-dialog.c
index 43aa5befd1..e590944a03 100644
--- a/src/mail/e-mail-label-dialog.c
+++ b/src/mail/e-mail-label-dialog.c
@@ -108,16 +108,8 @@ mail_label_dialog_dispose (GObject *object)
        EMailLabelDialogPrivate *priv;
 
        priv = E_MAIL_LABEL_DIALOG_GET_PRIVATE (object);
-
-       if (priv->entry != NULL) {
-               g_object_unref (priv->entry);
-               priv->entry = NULL;
-       }
-
-       if (priv->colorsel != NULL) {
-               g_object_unref (priv->colorsel);
-               priv->colorsel = NULL;
-       }
+       g_clear_object (&priv->entry);
+       g_clear_object (&priv->colorsel);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_label_dialog_parent_class)->dispose (object);
diff --git a/src/mail/e-mail-label-list-store.c b/src/mail/e-mail-label-list-store.c
index 7494a4375d..b650844e7e 100644
--- a/src/mail/e-mail-label-list-store.c
+++ b/src/mail/e-mail-label-list-store.c
@@ -212,10 +212,7 @@ mail_label_list_store_dispose (GObject *object)
                priv->idle_changed_id = 0;
        }
 
-       if (priv->mail_settings != NULL) {
-               g_object_unref (priv->mail_settings);
-               priv->mail_settings = NULL;
-       }
+       g_clear_object (&priv->mail_settings);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_label_list_store_parent_class)->
diff --git a/src/mail/e-mail-label-manager.c b/src/mail/e-mail-label-manager.c
index d0d86aa2cd..71aee1c6f8 100644
--- a/src/mail/e-mail-label-manager.c
+++ b/src/mail/e-mail-label-manager.c
@@ -126,26 +126,10 @@ mail_label_manager_dispose (GObject *object)
        EMailLabelManagerPrivate *priv;
 
        priv = E_MAIL_LABEL_MANAGER_GET_PRIVATE (object);
-
-       if (priv->tree_view != NULL) {
-               g_object_unref (priv->tree_view);
-               priv->tree_view = NULL;
-       }
-
-       if (priv->add_button != NULL) {
-               g_object_unref (priv->add_button);
-               priv->add_button = NULL;
-       }
-
-       if (priv->edit_button != NULL) {
-               g_object_unref (priv->edit_button);
-               priv->edit_button = NULL;
-       }
-
-       if (priv->remove_button != NULL) {
-               g_object_unref (priv->remove_button);
-               priv->remove_button = NULL;
-       }
+       g_clear_object (&priv->tree_view);
+       g_clear_object (&priv->add_button);
+       g_clear_object (&priv->edit_button);
+       g_clear_object (&priv->remove_button);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_label_manager_parent_class)->dispose (object);
diff --git a/src/mail/e-mail-paned-view.c b/src/mail/e-mail-paned-view.c
index ab2959de70..afdc780e3f 100644
--- a/src/mail/e-mail-paned-view.c
+++ b/src/mail/e-mail-paned-view.c
@@ -491,15 +491,8 @@ mail_paned_view_dispose (GObject *object)
 
        e_mail_reader_dispose (E_MAIL_READER (object));
 
-       if (priv->paned != NULL) {
-               g_object_unref (priv->paned);
-               priv->paned = NULL;
-       }
-
-       if (priv->scrolled_window != NULL) {
-               g_object_unref (priv->scrolled_window);
-               priv->scrolled_window = NULL;
-       }
+       g_clear_object (&priv->paned);
+       g_clear_object (&priv->scrolled_window);
 
        if (priv->message_list != NULL) {
                /* It can be disconnected by EMailReader in e_mail_reader_dispose() */
@@ -514,15 +507,8 @@ mail_paned_view_dispose (GObject *object)
                priv->message_list = NULL;
        }
 
-       if (priv->preview_pane != NULL) {
-               g_object_unref (priv->preview_pane);
-               priv->preview_pane = NULL;
-       }
-
-       if (priv->view_instance != NULL) {
-               g_object_unref (priv->view_instance);
-               priv->view_instance = NULL;
-       }
+       g_clear_object (&priv->preview_pane);
+       g_clear_object (&priv->view_instance);
 
        g_clear_pointer (&priv->last_selected_uid, g_free);
 
@@ -1094,10 +1080,7 @@ mail_paned_view_update_view_instance (EMailView *view)
        if (folder == NULL)
                return;
 
-       if (priv->view_instance != NULL) {
-               g_object_unref (priv->view_instance);
-               priv->view_instance = NULL;
-       }
+       g_clear_object (&priv->view_instance);
 
        view_id = empv_create_view_id (folder);
        e_filename_make_safe (view_id);
diff --git a/src/mail/e-mail-templates-store.c b/src/mail/e-mail-templates-store.c
index 0202a4ae23..4e91003b3a 100644
--- a/src/mail/e-mail-templates-store.c
+++ b/src/mail/e-mail-templates-store.c
@@ -231,11 +231,7 @@ tmpl_folder_data_unref (gpointer ptr)
                        tfd->changed_handler_id = 0;
                }
 
-               if (tfd->templates_store_weakref) {
-                       e_weak_ref_free (tfd->templates_store_weakref);
-                       tfd->templates_store_weakref = NULL;
-               }
-
+               g_clear_pointer (&tfd->templates_store_weakref, e_weak_ref_free);
                g_clear_object (&tfd->folder);
 
                g_mutex_clear (&tfd->busy_lock);
@@ -699,10 +695,7 @@ tmpl_store_data_unref (gpointer ptr)
                if (!g_atomic_int_dec_and_test (&tsd->ref_count))
                        return;
 
-               if (tsd->templates_store_weakref) {
-                       e_weak_ref_free (tsd->templates_store_weakref);
-                       tsd->templates_store_weakref = NULL;
-               }
+               g_clear_pointer (&tsd->templates_store_weakref, e_weak_ref_free);
 
                if (tsd->store_weakref) {
                        CamelStore *store;
diff --git a/src/mail/e-mail-ui-session.c b/src/mail/e-mail-ui-session.c
index df9ac111a0..04341d6c89 100644
--- a/src/mail/e-mail-ui-session.c
+++ b/src/mail/e-mail-ui-session.c
@@ -441,11 +441,7 @@ mail_ui_session_dispose (GObject *object)
        EMailUISessionPrivate *priv;
 
        priv = E_MAIL_UI_SESSION_GET_PRIVATE (object);
-
-       if (priv->registry != NULL) {
-               g_object_unref (priv->registry);
-               priv->registry = NULL;
-       }
+       g_clear_object (&priv->registry);
 
        if (priv->account_store != NULL) {
                e_mail_account_store_clear (priv->account_store);
@@ -453,15 +449,8 @@ mail_ui_session_dispose (GObject *object)
                priv->account_store = NULL;
        }
 
-       if (priv->label_store != NULL) {
-               g_object_unref (priv->label_store);
-               priv->label_store = NULL;
-       }
-
-       if (priv->photo_cache != NULL) {
-               g_object_unref (priv->photo_cache);
-               priv->photo_cache = NULL;
-       }
+       g_clear_object (&priv->label_store);
+       g_clear_object (&priv->photo_cache);
 
        g_mutex_lock (&priv->address_cache_mutex);
        g_slist_free_full (priv->address_cache, address_cache_data_free);
@@ -482,10 +471,7 @@ mail_ui_session_finalize (GObject *object)
        g_mutex_clear (&priv->address_cache_mutex);
 
 #ifdef HAVE_CANBERRA
-       if (cactx) {
-               ca_context_destroy (cactx);
-               cactx = NULL;
-       }
+       g_clear_pointer (&cactx, ca_context_destroy);
 #endif
 
        /* Chain up to parent's method. */
diff --git a/src/mail/e-mail-view.c b/src/mail/e-mail-view.c
index 6e3cb04267..0fba7c5a14 100644
--- a/src/mail/e-mail-view.c
+++ b/src/mail/e-mail-view.c
@@ -170,16 +170,8 @@ mail_view_dispose (GObject *object)
        EMailViewPrivate *priv;
 
        priv = E_MAIL_VIEW_GET_PRIVATE (object);
-
-       if (priv->shell_view != NULL) {
-               g_object_unref (priv->shell_view);
-               priv->shell_view = NULL;
-       }
-
-       if (priv->previous_view != NULL) {
-               g_object_unref (priv->previous_view);
-               priv->previous_view = NULL;
-       }
+       g_clear_object (&priv->shell_view);
+       g_clear_object (&priv->previous_view);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_view_parent_class)->dispose (object);
diff --git a/src/mail/em-filter-context.c b/src/mail/em-filter-context.c
index 9aacffd936..445327fd81 100644
--- a/src/mail/em-filter-context.c
+++ b/src/mail/em-filter-context.c
@@ -101,11 +101,7 @@ filter_context_dispose (GObject *object)
        EMFilterContextPrivate *priv;
 
        priv = EM_FILTER_CONTEXT_GET_PRIVATE (object);
-
-       if (priv->session != NULL) {
-               g_object_unref (priv->session);
-               priv->session = NULL;
-       }
+       g_clear_object (&priv->session);
 
        g_list_foreach (priv->actions, (GFunc) g_object_unref, NULL);
        g_list_free (priv->actions);
diff --git a/src/mail/em-filter-editor-folder-element.c b/src/mail/em-filter-editor-folder-element.c
index 5d7a2f84fc..c78cd396fe 100644
--- a/src/mail/em-filter-editor-folder-element.c
+++ b/src/mail/em-filter-editor-folder-element.c
@@ -130,10 +130,7 @@ filter_editor_folder_element_dispose (GObject *object)
        EMFilterEditorFolderElementPrivate *priv;
 
        priv = EM_FILTER_EDITOR_FOLDER_ELEMENT_GET_PRIVATE (object);
-       if (priv->session != NULL) {
-               g_object_unref (priv->session);
-               priv->session = NULL;
-       }
+       g_clear_object (&priv->session);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (em_filter_editor_folder_element_parent_class)->dispose (object);
diff --git a/src/mail/em-filter-source-element.c b/src/mail/em-filter-source-element.c
index 496a90b168..763abacd3d 100644
--- a/src/mail/em-filter-source-element.c
+++ b/src/mail/em-filter-source-element.c
@@ -116,11 +116,7 @@ filter_source_element_dispose (GObject *object)
        EMFilterSourceElementPrivate *priv;
 
        priv = EM_FILTER_SOURCE_ELEMENT_GET_PRIVATE (object);
-
-       if (priv->session != NULL) {
-               g_object_unref (priv->session);
-               priv->session = NULL;
-       }
+       g_clear_object (&priv->session);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (em_filter_source_element_parent_class)->dispose (object);
diff --git a/src/mail/em-folder-selection-button.c b/src/mail/em-folder-selection-button.c
index 6f3bdaa608..c9395e3dc7 100644
--- a/src/mail/em-folder-selection-button.c
+++ b/src/mail/em-folder-selection-button.c
@@ -229,16 +229,8 @@ folder_selection_button_dispose (GObject *object)
        EMFolderSelectionButtonPrivate *priv;
 
        priv = EM_FOLDER_SELECTION_BUTTON_GET_PRIVATE (object);
-
-       if (priv->session != NULL) {
-               g_object_unref (priv->session);
-               priv->session = NULL;
-       }
-
-       if (priv->store != NULL) {
-               g_object_unref (priv->store);
-               priv->store = NULL;
-       }
+       g_clear_object (&priv->session);
+       g_clear_object (&priv->store);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (em_folder_selection_button_parent_class)->
diff --git a/src/mail/em-folder-tree.c b/src/mail/em-folder-tree.c
index eee04578ba..09c0299bbf 100644
--- a/src/mail/em-folder-tree.c
+++ b/src/mail/em-folder-tree.c
@@ -1313,20 +1313,9 @@ folder_tree_dispose (GObject *object)
                priv->autoexpand_id = 0;
        }
 
-       if (priv->alert_sink != NULL) {
-               g_object_unref (priv->alert_sink);
-               priv->alert_sink = NULL;
-       }
-
-       if (priv->session != NULL) {
-               g_object_unref (priv->session);
-               priv->session = NULL;
-       }
-
-       if (priv->text_renderer != NULL) {
-               g_object_unref (priv->text_renderer);
-               priv->text_renderer = NULL;
-       }
+       g_clear_object (&priv->alert_sink);
+       g_clear_object (&priv->session);
+       g_clear_object (&priv->text_renderer);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (em_folder_tree_parent_class)->dispose (object);
@@ -2857,10 +2846,7 @@ tree_drag_end (GtkWidget *widget,
 {
        EMFolderTreePrivate *priv = folder_tree->priv;
 
-       if (priv->drag_row != NULL) {
-               gtk_tree_row_reference_free (priv->drag_row);
-               priv->drag_row = NULL;
-       }
+       g_clear_pointer (&priv->drag_row, gtk_tree_row_reference_free);
 
        /* FIXME: undo anything done in drag-begin */
 }
@@ -3337,10 +3323,7 @@ em_folder_tree_select_next_path (EMFolderTree *folder_tree,
                current_path = gtk_tree_model_get_path (model, &iter);
 
                do {
-                       if (path) {
-                               gtk_tree_path_free (path);
-                               path = NULL;
-                       }
+                       g_clear_pointer (&path, gtk_tree_path_free);
 
                        if (gtk_tree_model_iter_has_child (model, &iter)) {
                                if (!gtk_tree_model_iter_children (model, &child, &iter))
diff --git a/src/mail/em-subscription-editor.c b/src/mail/em-subscription-editor.c
index 8cb51a82e2..fe0ccc148b 100644
--- a/src/mail/em-subscription-editor.c
+++ b/src/mail/em-subscription-editor.c
@@ -1544,15 +1544,8 @@ subscription_editor_dispose (GObject *object)
 
        priv = EM_SUBSCRIPTION_EDITOR_GET_PRIVATE (object);
 
-       if (priv->session != NULL) {
-               g_object_unref (priv->session);
-               priv->session = NULL;
-       }
-
-       if (priv->initial_store != NULL) {
-               g_object_unref (priv->initial_store);
-               priv->initial_store = NULL;
-       }
+       g_clear_object (&priv->session);
+       g_clear_object (&priv->initial_store);
 
        if (priv->timeout_id > 0) {
                g_source_remove (priv->timeout_id);
diff --git a/src/mail/em-vfolder-editor-context.c b/src/mail/em-vfolder-editor-context.c
index c3e8e61d03..f8fc78ae44 100644
--- a/src/mail/em-vfolder-editor-context.c
+++ b/src/mail/em-vfolder-editor-context.c
@@ -114,10 +114,7 @@ vfolder_editor_context_dispose (GObject *object)
        EMVFolderEditorContextPrivate *priv;
 
        priv = EM_VFOLDER_EDITOR_CONTEXT_GET_PRIVATE (object);
-       if (priv->session != NULL) {
-               g_object_unref (priv->session);
-               priv->session = NULL;
-       }
+       g_clear_object (&priv->session);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (em_vfolder_editor_context_parent_class)->dispose (object);
diff --git a/src/mail/em-vfolder-editor-rule.c b/src/mail/em-vfolder-editor-rule.c
index 559903c62f..f40f4e795a 100644
--- a/src/mail/em-vfolder-editor-rule.c
+++ b/src/mail/em-vfolder-editor-rule.c
@@ -126,10 +126,7 @@ vfolder_editor_rule_dispose (GObject *object)
        EMVFolderEditorRulePrivate *priv;
 
        priv = EM_VFOLDER_EDITOR_RULE_GET_PRIVATE (object);
-       if (priv->session != NULL) {
-               g_object_unref (priv->session);
-               priv->session = NULL;
-       }
+       g_clear_object (&priv->session);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (em_vfolder_editor_rule_parent_class)->dispose (object);
diff --git a/src/mail/importers/kmail-importer.c b/src/mail/importers/kmail-importer.c
index 307d20e388..164b408cca 100644
--- a/src/mail/importers/kmail-importer.c
+++ b/src/mail/importers/kmail-importer.c
@@ -78,8 +78,7 @@ kmail_import_done (gpointer data,
        KMailImporter *importer = data;
 
        g_source_remove (importer->status_timeout_id);
-       if (importer->status_what)
-               g_free (importer->status_what);
+       g_free (importer->status_what);
 
        g_mutex_clear (&importer->status_lock);
        g_object_unref (importer->cancellable);
@@ -137,8 +136,7 @@ static void
 folder_selected (EMFolderSelectionButton *button,
                  EImportTargetURI *target)
 {
-       if (target->uri_dest)
-               g_free (target->uri_dest);
+       g_free (target->uri_dest);
        target->uri_dest = g_strdup (em_folder_selection_button_get_folder_uri (button));
 }
 
diff --git a/src/mail/message-list.c b/src/mail/message-list.c
index 8bf52208fe..7da8992cfd 100644
--- a/src/mail/message-list.c
+++ b/src/mail/message-list.c
@@ -837,11 +837,7 @@ static void
 clear_selection (MessageList *message_list,
                  struct _MLSelection *selection)
 {
-       if (selection->uids != NULL) {
-               g_ptr_array_unref (selection->uids);
-               selection->uids = NULL;
-       }
-
+       g_clear_pointer (&selection->uids, g_ptr_array_unref);
        g_clear_object (&selection->folder);
 }
 
@@ -3237,15 +3233,8 @@ message_list_dispose (GObject *object)
                priv->folder_changed_handler_id = 0;
        }
 
-       if (priv->copy_target_list != NULL) {
-               gtk_target_list_unref (priv->copy_target_list);
-               priv->copy_target_list = NULL;
-       }
-
-       if (priv->paste_target_list != NULL) {
-               gtk_target_list_unref (priv->paste_target_list);
-               priv->paste_target_list = NULL;
-       }
+       g_clear_pointer (&priv->copy_target_list, gtk_target_list_unref);
+       g_clear_pointer (&priv->paste_target_list, gtk_target_list_unref);
 
        priv->destroyed = TRUE;
 
@@ -3255,10 +3244,7 @@ message_list_dispose (GObject *object)
        g_mutex_lock (&message_list->priv->regen_lock);
 
        /* This can happen when the regen_idle_id is removed before it's invoked */
-       if (message_list->priv->regen_data) {
-               regen_data_unref (message_list->priv->regen_data);
-               message_list->priv->regen_data = NULL;
-       }
+       g_clear_pointer (&message_list->priv->regen_data, regen_data_unref);
 
        g_mutex_unlock (&message_list->priv->regen_lock);
 
@@ -6573,12 +6559,9 @@ message_list_regen_done_cb (GObject *source_object,
 
                if (message_list->just_set_folder) {
                        message_list->just_set_folder = FALSE;
-                       if (regen_data->expand_state != NULL) {
-                               /* Load state from disk rather than use
-                                * the memory data when changing folders. */
-                               xmlFreeDoc (regen_data->expand_state);
-                               regen_data->expand_state = NULL;
-                       }
+                       /* Load state from disk rather than use
+                        * the memory data when changing folders. */
+                       g_clear_pointer (&regen_data->expand_state, xmlFreeDoc);
                }
 
                if (forcing_expand_state) {
diff --git a/src/modules/addressbook/e-book-shell-content.c b/src/modules/addressbook/e-book-shell-content.c
index efb973ccee..1025059643 100644
--- a/src/modules/addressbook/e-book-shell-content.c
+++ b/src/modules/addressbook/e-book-shell-content.c
@@ -230,21 +230,9 @@ book_shell_content_dispose (GObject *object)
        EBookShellContentPrivate *priv;
 
        priv = E_BOOK_SHELL_CONTENT_GET_PRIVATE (object);
-
-       if (priv->paned != NULL) {
-               g_object_unref (priv->paned);
-               priv->paned = NULL;
-       }
-
-       if (priv->notebook != NULL) {
-               g_object_unref (priv->notebook);
-               priv->notebook = NULL;
-       }
-
-       if (priv->preview_pane != NULL) {
-               g_object_unref (priv->preview_pane);
-               priv->preview_pane = NULL;
-       }
+       g_clear_object (&priv->paned);
+       g_clear_object (&priv->notebook);
+       g_clear_object (&priv->preview_pane);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_book_shell_content_parent_class)->dispose (object);
diff --git a/src/modules/addressbook/e-book-shell-sidebar.c b/src/modules/addressbook/e-book-shell-sidebar.c
index 060672a4d9..2136d7e035 100644
--- a/src/modules/addressbook/e-book-shell-sidebar.c
+++ b/src/modules/addressbook/e-book-shell-sidebar.c
@@ -112,11 +112,7 @@ book_shell_sidebar_dispose (GObject *object)
        EBookShellSidebarPrivate *priv;
 
        priv = E_BOOK_SHELL_SIDEBAR_GET_PRIVATE (object);
-
-       if (priv->selector != NULL) {
-               g_object_unref (priv->selector);
-               priv->selector = NULL;
-       }
+       g_clear_object (&priv->selector);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_book_shell_sidebar_parent_class)->dispose (object);
diff --git a/src/modules/book-config-ldap/evolution-book-config-ldap.c 
b/src/modules/book-config-ldap/evolution-book-config-ldap.c
index b172153b03..554337e422 100644
--- a/src/modules/book-config-ldap/evolution-book-config-ldap.c
+++ b/src/modules/book-config-ldap/evolution-book-config-ldap.c
@@ -326,10 +326,7 @@ book_config_ldap_search_base_done (GObject *source_object,
        g_return_if_fail (sbd != NULL);
 
        if (!g_cancellable_is_cancelled (sbd->cancellable)) {
-               if (sbd->dialog) {
-                       gtk_widget_destroy (sbd->dialog);
-                       sbd->dialog = NULL;
-               }
+               g_clear_pointer (&sbd->dialog, gtk_widget_destroy);
        } else {
                was_cancelled = TRUE;
        }
diff --git a/src/modules/cal-config-contacts/evolution-cal-config-contacts.c 
b/src/modules/cal-config-contacts/evolution-cal-config-contacts.c
index a311c41eea..b057864006 100644
--- a/src/modules/cal-config-contacts/evolution-cal-config-contacts.c
+++ b/src/modules/cal-config-contacts/evolution-cal-config-contacts.c
@@ -160,10 +160,7 @@ book_config_birthdays_dispose (GObject *object)
 
        birthdays = E_BOOK_CONFIG_BIRTHDAYS (object);
 
-       if (birthdays->button != NULL) {
-               g_object_unref (birthdays->button);
-               birthdays->button = NULL;
-       }
+       g_clear_object (&birthdays->button);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_book_config_birthdays_parent_class)->dispose (object);
diff --git a/src/modules/calendar/e-cal-shell-view-private.c b/src/modules/calendar/e-cal-shell-view-private.c
index 4a1000362f..b3ed7c7fd1 100644
--- a/src/modules/calendar/e-cal-shell-view-private.c
+++ b/src/modules/calendar/e-cal-shell-view-private.c
@@ -639,10 +639,7 @@ e_cal_shell_view_private_dispose (ECalShellView *cal_shell_view)
 void
 e_cal_shell_view_private_finalize (ECalShellView *cal_shell_view)
 {
-       if (cal_shell_view->priv->old_settings) {
-               g_hash_table_destroy (cal_shell_view->priv->old_settings);
-               cal_shell_view->priv->old_settings = NULL;
-       }
+       g_clear_pointer (&cal_shell_view->priv->old_settings, g_hash_table_destroy);
 }
 
 void
diff --git a/src/modules/calendar/e-task-shell-view-private.c 
b/src/modules/calendar/e-task-shell-view-private.c
index 79482a5d90..e4901911a7 100644
--- a/src/modules/calendar/e-task-shell-view-private.c
+++ b/src/modules/calendar/e-task-shell-view-private.c
@@ -507,10 +507,7 @@ e_task_shell_view_private_dispose (ETaskShellView *task_shell_view)
 void
 e_task_shell_view_private_finalize (ETaskShellView *task_shell_view)
 {
-       if (task_shell_view->priv->old_settings) {
-               g_hash_table_destroy (task_shell_view->priv->old_settings);
-               task_shell_view->priv->old_settings = NULL;
-       }
+       g_clear_pointer (&task_shell_view->priv->old_settings, g_hash_table_destroy);
 }
 
 void
diff --git a/src/modules/itip-formatter/itip-view.c b/src/modules/itip-formatter/itip-view.c
index dafaa5c283..c7b44fa868 100644
--- a/src/modules/itip-formatter/itip-view.c
+++ b/src/modules/itip-formatter/itip-view.c
@@ -810,8 +810,7 @@ set_sender_text (ItipView *view)
        ItipViewPrivate *priv;
        priv = view->priv;
 
-       if (priv->sender)
-               g_free (priv->sender);
+       g_free (priv->sender);
 
        switch (priv->type) {
        case E_CAL_CLIENT_SOURCE_TYPE_EVENTS:
@@ -847,10 +846,8 @@ update_start_end_times (ItipView *view)
        now = time (NULL);
        now_tm = localtime (&now);
 
-       if (priv->start_label)
-               g_free (priv->start_label);
-       if (priv->end_label)
-               g_free (priv->end_label);
+       g_free (priv->start_label);
+       g_free (priv->end_label);
 
        #define is_same(_member) (priv->start_tm->_member == priv->end_tm->_member)
        if (priv->start_tm && priv->end_tm && priv->start_tm_is_date && priv->end_tm_is_date
@@ -1074,8 +1071,7 @@ append_checkbox_table_row (GString *buffer,
 
        g_free (html_label);
 
-       if (access_key)
-               g_free (access_key);
+       g_free (access_key);
 }
 
 static void
@@ -1234,8 +1230,7 @@ buttons_table_write_button (GString *buffer,
 
        g_free (html_label);
 
-       if (access_key)
-               g_free (access_key);
+       g_free (access_key);
 }
 
 static void
@@ -2011,9 +2006,7 @@ itip_view_set_item_type (ItipView *view,
 
        g_object_unref (web_view);
        g_free (html_label);
-
-       if (access_key)
-               g_free (access_key);
+       g_free (access_key);
 
        set_sender_text (view);
 }
@@ -2032,8 +2025,7 @@ itip_view_set_organizer (ItipView *view,
 {
        g_return_if_fail (ITIP_IS_VIEW (view));
 
-       if (view->priv->organizer)
-               g_free (view->priv->organizer);
+       g_free (view->priv->organizer);
 
        view->priv->organizer = e_utf8_ensure_valid (organizer);
 
@@ -2054,8 +2046,7 @@ itip_view_set_organizer_sentby (ItipView *view,
 {
        g_return_if_fail (ITIP_IS_VIEW (view));
 
-       if (view->priv->organizer_sentby)
-               g_free (view->priv->organizer_sentby);
+       g_free (view->priv->organizer_sentby);
 
        view->priv->organizer_sentby = e_utf8_ensure_valid (sentby);
 
@@ -2076,8 +2067,7 @@ itip_view_set_attendee (ItipView *view,
 {
        g_return_if_fail (ITIP_IS_VIEW (view));
 
-       if (view->priv->attendee)
-               g_free (view->priv->attendee);
+       g_free (view->priv->attendee);
 
        view->priv->attendee = e_utf8_ensure_valid (attendee);
 
@@ -2098,8 +2088,7 @@ itip_view_set_attendee_sentby (ItipView *view,
 {
        g_return_if_fail (ITIP_IS_VIEW (view));
 
-       if (view->priv->attendee_sentby)
-               g_free (view->priv->attendee_sentby);
+       g_free (view->priv->attendee_sentby);
 
        view->priv->attendee_sentby = e_utf8_ensure_valid (sentby);
 
@@ -2120,8 +2109,7 @@ itip_view_set_proxy (ItipView *view,
 {
        g_return_if_fail (ITIP_IS_VIEW (view));
 
-       if (view->priv->proxy)
-               g_free (view->priv->proxy);
+       g_free (view->priv->proxy);
 
        view->priv->proxy = e_utf8_ensure_valid (proxy);
 
@@ -2142,8 +2130,7 @@ itip_view_set_delegator (ItipView *view,
 {
        g_return_if_fail (ITIP_IS_VIEW (view));
 
-       if (view->priv->delegator)
-               g_free (view->priv->delegator);
+       g_free (view->priv->delegator);
 
        view->priv->delegator = e_utf8_ensure_valid (delegator);
 
@@ -2164,8 +2151,7 @@ itip_view_set_summary (ItipView *view,
 {
        g_return_if_fail (ITIP_IS_VIEW (view));
 
-       if (view->priv->summary)
-               g_free (view->priv->summary);
+       g_free (view->priv->summary);
 
        view->priv->summary = summary ? g_strstrip (e_utf8_ensure_valid (summary)) : NULL;
 
@@ -2186,8 +2172,7 @@ itip_view_set_location (ItipView *view,
 {
        g_return_if_fail (ITIP_IS_VIEW (view));
 
-       if (view->priv->location)
-               g_free (view->priv->location);
+       g_free (view->priv->location);
 
        view->priv->location = location ? g_strstrip (e_utf8_ensure_valid (location)) : NULL;
 
@@ -2232,8 +2217,7 @@ itip_view_set_status (ItipView *view,
 {
        g_return_if_fail (ITIP_IS_VIEW (view));
 
-       if (view->priv->status)
-               g_free (view->priv->status);
+       g_free (view->priv->status);
 
        view->priv->status = status ? g_strstrip (e_utf8_ensure_valid (status)) : NULL;
 
@@ -2254,8 +2238,7 @@ itip_view_set_comment (ItipView *view,
 {
        g_return_if_fail (ITIP_IS_VIEW (view));
 
-       if (view->priv->comment)
-               g_free (view->priv->comment);
+       g_free (view->priv->comment);
 
        view->priv->comment = comment ? g_strstrip (e_utf8_ensure_valid (comment)) : NULL;
 
@@ -2426,8 +2409,7 @@ itip_view_set_description (ItipView *view,
 {
        g_return_if_fail (ITIP_IS_VIEW (view));
 
-       if (view->priv->description)
-               g_free (view->priv->description);
+       g_free (view->priv->description);
 
        view->priv->description = description ? g_strstrip (e_utf8_ensure_valid (description)) : NULL;
 
@@ -4056,8 +4038,7 @@ decrease_find_data (FormatItipFindData *fd)
                g_object_unref (fd->view);
                g_free (fd->uid);
                g_free (fd->rid);
-               if (fd->sexp)
-                       g_free (fd->sexp);
+               g_free (fd->sexp);
                g_slice_free (FormatItipFindData, fd);
        }
 }
diff --git a/src/modules/mail-config/e-mail-config-google-summary.c 
b/src/modules/mail-config/e-mail-config-google-summary.c
index e86a7e951b..94d4f22e82 100644
--- a/src/modules/mail-config/e-mail-config-google-summary.c
+++ b/src/modules/mail-config/e-mail-config-google-summary.c
@@ -239,11 +239,7 @@ mail_config_google_summary_dispose (GObject *object)
        EMailConfigGoogleSummaryPrivate *priv;
 
        priv = E_MAIL_CONFIG_GOOGLE_SUMMARY_GET_PRIVATE (object);
-
-       if (priv->collection_source != NULL) {
-               g_object_unref (priv->collection_source);
-               priv->collection_source = NULL;
-       }
+       g_clear_object (&priv->collection_source);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_config_google_summary_parent_class)->
diff --git a/src/modules/mail-config/e-mail-config-yahoo-summary.c 
b/src/modules/mail-config/e-mail-config-yahoo-summary.c
index 8a9e6a0e8d..5753eec0c1 100644
--- a/src/modules/mail-config/e-mail-config-yahoo-summary.c
+++ b/src/modules/mail-config/e-mail-config-yahoo-summary.c
@@ -190,11 +190,7 @@ mail_config_yahoo_summary_dispose (GObject *object)
        EMailConfigYahooSummaryPrivate *priv;
 
        priv = E_MAIL_CONFIG_YAHOO_SUMMARY_GET_PRIVATE (object);
-
-       if (priv->collection_source != NULL) {
-               g_object_unref (priv->collection_source);
-               priv->collection_source = NULL;
-       }
+       g_clear_object (&priv->collection_source);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_config_yahoo_summary_parent_class)->
diff --git a/src/modules/mail/e-mail-shell-content.c b/src/modules/mail/e-mail-shell-content.c
index 7e3dc553d7..0133bae52a 100644
--- a/src/modules/mail/e-mail-shell-content.c
+++ b/src/modules/mail/e-mail-shell-content.c
@@ -238,11 +238,7 @@ mail_shell_content_dispose (GObject *object)
        EMailShellContentPrivate *priv;
 
        priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (object);
-
-       if (priv->mail_view != NULL) {
-               g_object_unref (priv->mail_view);
-               priv->mail_view = NULL;
-       }
+       g_clear_object (&priv->mail_view);
 
        /* Intentionally after freeing the mail_view, because
           the widgets it contains/references can be freed already */
diff --git a/src/modules/mail/e-mail-shell-view.c b/src/modules/mail/e-mail-shell-view.c
index ae318c97f5..9084a6d459 100644
--- a/src/modules/mail/e-mail-shell-view.c
+++ b/src/modules/mail/e-mail-shell-view.c
@@ -968,10 +968,7 @@ filter:
                CamelStore *selected_store = NULL;
                gchar *selected_folder_name = NULL;
 
-               if (priv->search_folder_and_subfolders != NULL) {
-                       g_object_unref (priv->search_folder_and_subfolders);
-                       priv->search_folder_and_subfolders = NULL;
-               }
+               g_clear_object (&priv->search_folder_and_subfolders);
 
                if (priv->search_account_cancel != NULL) {
                        g_cancellable_cancel (priv->search_account_cancel);
@@ -1090,10 +1087,7 @@ all_accounts:
                CamelStore *selected_store = NULL;
                gchar *selected_folder_name = NULL;
 
-               if (priv->search_account_all != NULL) {
-                       g_object_unref (priv->search_account_all);
-                       priv->search_account_all = NULL;
-               }
+               g_clear_object (&priv->search_account_all);
 
                if (priv->search_account_cancel != NULL) {
                        g_cancellable_cancel (priv->search_account_cancel);
@@ -1201,10 +1195,7 @@ current_account:
                CamelStore *selected_store = NULL;
                gchar *selected_folder_name = NULL;
 
-               if (priv->search_account_current != NULL) {
-                       g_object_unref (priv->search_account_current);
-                       priv->search_account_current = NULL;
-               }
+               g_clear_object (&priv->search_account_current);
 
                if (priv->search_account_cancel != NULL) {
                        g_cancellable_cancel (priv->search_account_cancel);
diff --git a/src/modules/mail/em-account-prefs.c b/src/modules/mail/em-account-prefs.c
index 89dc165157..641050fa3d 100644
--- a/src/modules/mail/em-account-prefs.c
+++ b/src/modules/mail/em-account-prefs.c
@@ -131,11 +131,7 @@ account_prefs_dispose (GObject *object)
        EMAccountPrefsPrivate *priv;
 
        priv = EM_ACCOUNT_PREFS_GET_PRIVATE (object);
-
-       if (priv->backend != NULL) {
-               g_object_unref (priv->backend);
-               priv->backend = NULL;
-       }
+       g_clear_object (&priv->backend);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (em_account_prefs_parent_class)->dispose (object);
diff --git a/src/modules/mail/em-composer-prefs.c b/src/modules/mail/em-composer-prefs.c
index 7b4ad40cb5..b0742a9e18 100644
--- a/src/modules/mail/em-composer-prefs.c
+++ b/src/modules/mail/em-composer-prefs.c
@@ -56,10 +56,7 @@ composer_prefs_dispose (GObject *object)
 {
        EMComposerPrefs *prefs = (EMComposerPrefs *) object;
 
-       if (prefs->builder != NULL) {
-               g_object_unref (prefs->builder);
-               prefs->builder = NULL;
-       }
+       g_clear_object (&prefs->builder);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (em_composer_prefs_parent_class)->dispose (object);
diff --git a/src/modules/prefer-plain/e-mail-display-popup-prefer-plain.c 
b/src/modules/prefer-plain/e-mail-display-popup-prefer-plain.c
index 8b613fb546..2784153282 100644
--- a/src/modules/prefer-plain/e-mail-display-popup-prefer-plain.c
+++ b/src/modules/prefer-plain/e-mail-display-popup-prefer-plain.c
@@ -371,11 +371,7 @@ e_mail_display_popup_prefer_plain_dispose (GObject *object)
        EMailDisplayPopupPreferPlain *extension;
 
        extension = E_MAIL_DISPLAY_POPUP_PREFER_PLAIN (object);
-
-       if (extension->action_group != NULL) {
-               g_object_unref (extension->action_group);
-               extension->action_group = NULL;
-       }
+       g_clear_object (&extension->action_group);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_display_popup_prefer_plain_parent_class)->dispose (object);
diff --git a/src/modules/prefer-plain/plugin/config-ui.c b/src/modules/prefer-plain/plugin/config-ui.c
index ae7a3d20aa..79cba1d2d8 100644
--- a/src/modules/prefer-plain/plugin/config-ui.c
+++ b/src/modules/prefer-plain/plugin/config-ui.c
@@ -178,10 +178,7 @@ e_plugin_lib_enable (EPlugin *ep,
 
                epp_show_suppressed = g_settings_get_boolean (epp_settings, "show-suppressed");
        } else {
-               if (epp_settings) {
-                       g_object_unref (epp_settings);
-                       epp_settings = NULL;
-               }
+               g_clear_object (&epp_settings);
        }
 
        return 0;
diff --git a/src/modules/settings/e-settings-content-editor.c 
b/src/modules/settings/e-settings-content-editor.c
index dccb5317f2..b56ad6a167 100644
--- a/src/modules/settings/e-settings-content-editor.c
+++ b/src/modules/settings/e-settings-content-editor.c
@@ -171,11 +171,7 @@ settings_content_editor_finalize (GObject *object)
        ESettingsContentEditorPrivate *priv;
 
        priv = E_SETTINGS_CONTENT_EDITOR_GET_PRIVATE (object);
-
-       if (priv->old_settings) {
-               g_hash_table_destroy (priv->old_settings);
-               priv->old_settings = NULL;
-       }
+       g_clear_pointer (&priv->old_settings, g_hash_table_destroy);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_settings_content_editor_parent_class)->finalize (object);
diff --git a/src/modules/settings/e-settings-name-selector-entry.c 
b/src/modules/settings/e-settings-name-selector-entry.c
index 1f1c970017..7d28f567b3 100644
--- a/src/modules/settings/e-settings-name-selector-entry.c
+++ b/src/modules/settings/e-settings-name-selector-entry.c
@@ -40,11 +40,7 @@ settings_name_selector_entry_dispose (GObject *object)
        ESettingsNameSelectorEntryPrivate *priv;
 
        priv = E_SETTINGS_NAME_SELECTOR_ENTRY_GET_PRIVATE (object);
-
-       if (priv->settings != NULL) {
-               g_object_unref (priv->settings);
-               priv->settings = NULL;
-       }
+       g_clear_object (&priv->settings);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_settings_name_selector_entry_parent_class)->
diff --git a/src/modules/startup-wizard/e-mail-config-import-progress-page.c 
b/src/modules/startup-wizard/e-mail-config-import-progress-page.c
index f241c4e726..1aabdea7b7 100644
--- a/src/modules/startup-wizard/e-mail-config-import-progress-page.c
+++ b/src/modules/startup-wizard/e-mail-config-import-progress-page.c
@@ -147,11 +147,7 @@ mail_config_import_progress_page_dispose (GObject *object)
        EMailConfigImportProgressPagePrivate *priv;
 
        priv = E_MAIL_CONFIG_IMPORT_PROGRESS_PAGE_GET_PRIVATE (object);
-
-       if (priv->activity != NULL) {
-               g_object_unref (priv->activity);
-               priv->activity = NULL;
-       }
+       g_clear_object (&priv->activity);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_config_import_progress_page_parent_class)->
diff --git a/src/modules/startup-wizard/e-startup-assistant.c 
b/src/modules/startup-wizard/e-startup-assistant.c
index 2f4e3161bc..33511ba22e 100644
--- a/src/modules/startup-wizard/e-startup-assistant.c
+++ b/src/modules/startup-wizard/e-startup-assistant.c
@@ -112,21 +112,9 @@ startup_assistant_dispose (GObject *object)
        EStartupAssistantPrivate *priv;
 
        priv = E_STARTUP_ASSISTANT_GET_PRIVATE (object);
-
-       if (priv->import_activity != NULL) {
-               g_object_unref (priv->import_activity);
-               priv->import_activity = NULL;
-       }
-
-       if (priv->import_page != NULL) {
-               g_object_unref (priv->import_page);
-               priv->import_page = NULL;
-       }
-
-       if (priv->progress_page != NULL) {
-               g_object_unref (priv->progress_page);
-               priv->progress_page = NULL;
-       }
+       g_clear_object (&priv->import_activity);
+       g_clear_object (&priv->import_page);
+       g_clear_object (&priv->progress_page);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_startup_assistant_parent_class)->dispose (object);
diff --git a/src/modules/webkit-editor/e-webkit-editor.c b/src/modules/webkit-editor/e-webkit-editor.c
index aa4a9aa129..efe69a6276 100644
--- a/src/modules/webkit-editor/e-webkit-editor.c
+++ b/src/modules/webkit-editor/e-webkit-editor.c
@@ -4245,10 +4245,7 @@ webkit_editor_dispose (GObject *object)
        if (priv->cancellable)
                g_cancellable_cancel (priv->cancellable);
 
-       if (priv->current_user_stylesheet != NULL) {
-               g_free (priv->current_user_stylesheet);
-               priv->current_user_stylesheet = NULL;
-       }
+       g_clear_pointer (&priv->current_user_stylesheet, g_free);
 
        if (priv->font_settings != NULL) {
                g_signal_handlers_disconnect_by_data (priv->font_settings, object);
@@ -4289,10 +4286,7 @@ webkit_editor_finalize (GObject *object)
 
        priv = E_WEBKIT_EDITOR_GET_PRIVATE (object);
 
-       if (priv->old_settings) {
-               g_hash_table_destroy (priv->old_settings);
-               priv->old_settings = NULL;
-       }
+       g_clear_pointer (&priv->old_settings, g_hash_table_destroy);
 
        if (priv->post_reload_operations) {
                g_warn_if_fail (g_queue_is_empty (priv->post_reload_operations));
diff --git a/src/plugins/dbx-import/dbx-importer.c b/src/plugins/dbx-import/dbx-importer.c
index e6ef30a838..e0ffb965e9 100644
--- a/src/plugins/dbx-import/dbx-importer.c
+++ b/src/plugins/dbx-import/dbx-importer.c
@@ -699,8 +699,7 @@ dbx_import_file (DbxImporter *m)
  out:
        if (m->dbx_fd != -1)
                close (m->dbx_fd);
-       if (m->indices)
-               g_free (m->indices);
+       g_free (m->indices);
        /* FIXME Not passing GCancellable or GError here. */
        camel_folder_synchronize_sync (folder, FALSE, NULL, NULL);
        camel_folder_thaw (folder);
diff --git a/src/plugins/email-custom-header/email-custom-header.c 
b/src/plugins/email-custom-header/email-custom-header.c
index 3c43a3c3c9..4e517abea0 100644
--- a/src/plugins/email-custom-header/email-custom-header.c
+++ b/src/plugins/email-custom-header/email-custom-header.c
@@ -456,15 +456,8 @@ epech_custom_header_options_commit (EMsgComposer *comp,
                current_dialog = new_email_custom_header_window->epech_dialog;
        }
 
-       if (current_dialog) {
-               g_free (current_dialog);
-               current_dialog = NULL;
-       }
-
-       if (new_email_custom_header_window) {
-               g_free (new_email_custom_header_window);
-               new_email_custom_header_window = NULL;
-       }
+       g_clear_pointer (&current_dialog, g_free);
+       g_clear_pointer (&new_email_custom_header_window, g_free);
 }
 
 static gint
@@ -485,9 +478,6 @@ destroy_compo_data (gpointer data)
 {
        EmailCustomHeaderWindow *compo_data = (EmailCustomHeaderWindow *) data;
 
-       if (!compo_data)
-               return;
-
        g_free (compo_data);
 }
 
@@ -765,9 +755,6 @@ destroy_cd_data (gpointer data)
 {
        ConfigData *cd = (ConfigData *) data;
 
-       if (!cd)
-               return;
-
        g_free (cd);
 }
 
diff --git a/src/plugins/mail-notification/mail-notification.c 
b/src/plugins/mail-notification/mail-notification.c
index a553136c97..1cffe09e8e 100644
--- a/src/plugins/mail-notification/mail-notification.c
+++ b/src/plugins/mail-notification/mail-notification.c
@@ -143,9 +143,8 @@ mail_notify_not_accounts_changed_locked (GSettings *settings)
                for (ii = 0; uids[ii]; ii++) {
                        g_hash_table_insert (not_accounts, g_strdup (uids[ii]), NULL);
                }
-       } else if (not_accounts) {
-               g_hash_table_destroy (not_accounts);
-               not_accounts = NULL;
+       } else {
+               g_clear_pointer (&not_accounts, g_hash_table_destroy);
        }
 
        g_strfreev (uids);
@@ -315,9 +314,8 @@ enable_dbus (gint enable)
        if (enable) {
                /* we ignore errors here */
                init_gdbus ();
-       } else if (connection != NULL) {
-               g_object_unref (connection);
-               connection = NULL;
+       } else {
+               g_clear_object (&connection);
        }
 }
 
@@ -1406,10 +1404,7 @@ e_plugin_lib_enable (EPlugin *ep,
 
                        not_accounts_handler_id = 0;
 
-                       if (not_accounts) {
-                               g_hash_table_destroy (not_accounts);
-                               not_accounts = NULL;
-                       }
+                       g_clear_pointer (&not_accounts, g_hash_table_destroy);
                }
 
                g_mutex_unlock (&mlock);
diff --git a/src/plugins/mail-to-task/mail-to-task.c b/src/plugins/mail-to-task/mail-to-task.c
index d81cd9d610..9685aade1d 100644
--- a/src/plugins/mail-to-task/mail-to-task.c
+++ b/src/plugins/mail-to-task/mail-to-task.c
@@ -290,8 +290,7 @@ set_description (ECalComponent *comp,
        e_cal_component_set_descriptions (comp, sl);
 
        g_free (str);
-       if (convert_str)
-               g_free (convert_str);
+       g_free (convert_str);
        g_slist_free_full (sl, e_cal_component_text_free);
 }
 
@@ -575,8 +574,7 @@ free_manage_comp_struct (struct _manage_comp *mc)
        g_clear_object (&mc->stored_comp);
        g_mutex_clear (&mc->mutex);
        g_cond_clear (&mc->cond);
-       if (mc->editor_title)
-               g_free (mc->editor_title);
+       g_free (mc->editor_title);
 
        g_slice_free (struct _manage_comp, mc);
 }
@@ -724,8 +722,7 @@ comp_editor_title_changed (GtkWidget *widget,
        /* Remember the new title, so that when gtk_window_set_title() causes
         * this handler to be recursively called, we can recognize that and
         * prevent endless recursion */
-       if (mc->editor_title)
-               g_free (mc->editor_title);
+       g_free (mc->editor_title);
        mc->editor_title = new_title;
 
        gtk_window_set_title (editor, new_title);
diff --git a/src/plugins/pst-import/pst-importer.c b/src/plugins/pst-import/pst-importer.c
index 83b217fb23..f351fa3d02 100644
--- a/src/plugins/pst-import/pst-importer.c
+++ b/src/plugins/pst-import/pst-importer.c
@@ -821,10 +821,7 @@ pst_import_folders (PstImporter *m,
                pst_process_item (m, d_ptr, &previous_folder);
 
                if (d_ptr->child != NULL) {
-                       if (m->folder) {
-                               g_object_unref (m->folder);
-                               m->folder = NULL;
-                       }
+                       g_clear_object (&m->folder);
 
                        g_return_if_fail (m->folder_uri != NULL);
                        g_hash_table_insert (node_to_folderuri, d_ptr, g_strdup (m->folder_uri));
@@ -841,10 +838,7 @@ pst_import_folders (PstImporter *m,
                        d_ptr = d_ptr->next;
                } else {
                        while (d_ptr && d_ptr != topitem && d_ptr->next == NULL) {
-                               if (m->folder) {
-                                       g_object_unref (m->folder);
-                                       m->folder = NULL;
-                               }
+                               g_clear_object (&m->folder);
 
                                g_free (m->folder_uri);
                                m->folder_uri = NULL;
@@ -998,10 +992,7 @@ pst_process_folder (PstImporter *m,
        g_free (m->folder_uri);
        m->folder_uri = uri;
 
-       if (m->folder) {
-               g_object_unref (m->folder);
-               m->folder = NULL;
-       }
+       g_clear_object (&m->folder);
 
        m->folder_count = item->folder->item_count;
        m->current_item = 0;
@@ -1036,10 +1027,7 @@ pst_create_folder (PstImporter *m)
 
        g_return_if_fail (g_str_has_prefix (dest, parent));
 
-       if (m->folder) {
-               g_object_unref (m->folder);
-               m->folder = NULL;
-       }
+       g_clear_object (&m->folder);
 
        dest_len = strlen (dest);
        dest_end = dest + dest_len;
diff --git a/src/plugins/publish-calendar/publish-calendar.c b/src/plugins/publish-calendar/publish-calendar.c
index 00e4a37a61..5e0f79d263 100644
--- a/src/plugins/publish-calendar/publish-calendar.c
+++ b/src/plugins/publish-calendar/publish-calendar.c
@@ -541,8 +541,7 @@ update_timestamp (EPublishUri *uri)
        /* Update timestamp in settings */
        xml = e_publish_uri_to_xml (uri);
 
-       if (uri->last_pub_time)
-               g_free (uri->last_pub_time);
+       g_free (uri->last_pub_time);
        uri->last_pub_time = g_strdup_printf ("%d", (gint) time (NULL));
 
        uris_array = g_ptr_array_new_full (3, g_free);
diff --git a/src/plugins/publish-calendar/url-editor-dialog.c 
b/src/plugins/publish-calendar/url-editor-dialog.c
index c202a5e753..345f81c748 100644
--- a/src/plugins/publish-calendar/url-editor-dialog.c
+++ b/src/plugins/publish-calendar/url-editor-dialog.c
@@ -44,8 +44,7 @@ create_uri (UrlEditorDialog *dialog)
        uri = dialog->uri;
 
        if (uri->service_type == TYPE_URI) {
-               if (uri->location)
-                       g_free (uri->location);
+               g_free (uri->location);
                uri->location = g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->server_entry)));
        } else {
                const gchar *method = "file";
@@ -85,8 +84,7 @@ create_uri (UrlEditorDialog *dialog)
                        break;
                }
 
-               if (uri->location)
-                       g_free (uri->location);
+               g_free (uri->location);
                uri->location = g_strdup_printf (
                        "%s://%s%s%s%s%s%s%s",
                        method,
@@ -555,14 +553,8 @@ url_editor_dialog_dispose (GObject *obj)
 {
        UrlEditorDialog *dialog = (UrlEditorDialog *) obj;
 
-       if (dialog->url_list_model) {
-               g_object_unref (dialog->url_list_model);
-               dialog->url_list_model = NULL;
-       }
-       if (dialog->builder) {
-               g_object_unref (dialog->builder);
-               dialog->builder = NULL;
-       }
+       g_clear_object (&dialog->url_list_model);
+       g_clear_object (&dialog->builder);
 
        G_OBJECT_CLASS (url_editor_dialog_parent_class)->dispose (obj);
 }
@@ -590,8 +582,7 @@ url_editor_dialog_run (UrlEditorDialog *dialog)
        if (response == GTK_RESPONSE_OK) {
                GList *list, *link;
 
-               if (dialog->uri->password)
-                       g_free (dialog->uri->password);
+               g_free (dialog->uri->password);
                if (dialog->uri->events) {
                        g_slist_foreach (dialog->uri->events, (GFunc) g_free, NULL);
                        dialog->uri->events = NULL;
diff --git a/src/plugins/save-calendar/save-calendar.c b/src/plugins/save-calendar/save-calendar.c
index 50d25b6e7d..4e381d56e6 100644
--- a/src/plugins/save-calendar/save-calendar.c
+++ b/src/plugins/save-calendar/save-calendar.c
@@ -100,9 +100,7 @@ format_handlers_foreach_free (gpointer data)
        if (handler->options_widget)
                gtk_widget_destroy (handler->options_widget);
 
-       if (handler->data)
-               g_free (handler->data);
-
+       g_free (handler->data);
        g_free (data);
 }
 
@@ -270,9 +268,8 @@ open_for_writing (GtkWindow *parent,
                                g_object_unref (fostream);
                                fostream = NULL;
                        }
-               } else if (fostream) {
-                       g_object_unref (fostream);
-                       fostream = NULL;
+               } else {
+                       g_clear_object (&fostream);
                }
        }
 
diff --git a/src/shell/e-shell-backend.c b/src/shell/e-shell-backend.c
index dd74c7777c..7011e6d711 100644
--- a/src/shell/e-shell-backend.c
+++ b/src/shell/e-shell-backend.c
@@ -252,11 +252,7 @@ shell_backend_dispose (GObject *object)
        EShellBackendPrivate *priv;
 
        priv = E_SHELL_BACKEND_GET_PRIVATE (object);
-
-       if (priv->shell_view_class != NULL) {
-               g_type_class_unref (priv->shell_view_class);
-               priv->shell_view_class = NULL;
-       }
+       g_clear_pointer (&priv->shell_view_class, g_type_class_unref);
 
        if (priv->notify_busy_handler_id > 0) {
                g_signal_handler_disconnect (
diff --git a/src/shell/e-shell.c b/src/shell/e-shell.c
index 55b0421d77..c15e3272d1 100644
--- a/src/shell/e-shell.c
+++ b/src/shell/e-shell.c
@@ -1612,10 +1612,7 @@ shell_dispose (GObject *object)
        g_clear_object (&priv->credentials_prompter);
        g_clear_object (&priv->client_cache);
 
-       if (priv->preferences_window) {
-               gtk_widget_destroy (priv->preferences_window);
-               priv->preferences_window = NULL;
-       }
+       g_clear_pointer (&priv->preferences_window, gtk_widget_destroy);
 
        if (priv->preparing_for_line_change != NULL) {
                g_object_remove_weak_pointer (
diff --git a/src/smime/gui/certificate-manager.c b/src/smime/gui/certificate-manager.c
index 9f6d5337c1..c9b433957c 100644
--- a/src/smime/gui/certificate-manager.c
+++ b/src/smime/gui/certificate-manager.c
@@ -513,8 +513,7 @@ find_cert_cb (GtkTreeModel *model,
                fcd->path = gtk_tree_path_copy (path);
        }
 
-       if (cert)
-               g_object_unref (cert);
+       g_clear_object (&cert);
 
        return fcd->path != NULL;
 }
@@ -678,11 +677,7 @@ run_cert_backup_dialog_file_chooser (GtkButton *file_button,
 
                cert_backup_dialog_maybe_correct_extension (GTK_FILE_CHOOSER (native));
 
-               if (*data->file) {
-                       g_object_unref (*data->file);
-                       *data->file = NULL;
-               }
-
+               g_clear_object (&(*data->file));
                *data->file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (native));
 
                basename = g_file_get_basename (*data->file);
@@ -1978,11 +1973,7 @@ cert_page_free (CertPage *cp)
                cp->streemodel = NULL;
        }
 
-       if (cp->root_hash) {
-               g_hash_table_unref (cp->root_hash);
-               cp->root_hash = NULL;
-       }
-
+       g_clear_pointer (&cp->root_hash, g_hash_table_unref);
        g_free (cp);
 }
 
@@ -1991,30 +1982,16 @@ cert_manager_config_dispose (GObject *object)
 {
        ECertManagerConfig *ecmc = E_CERT_MANAGER_CONFIG (object);
 
-       if (ecmc->priv->yourcerts_page) {
-               cert_page_free (ecmc->priv->yourcerts_page);
-               ecmc->priv->yourcerts_page = NULL;
-       }
-
-       if (ecmc->priv->contactcerts_page) {
-               cert_page_free (ecmc->priv->contactcerts_page);
-               ecmc->priv->contactcerts_page = NULL;
-       }
-
-       if (ecmc->priv->authoritycerts_page) {
-               cert_page_free (ecmc->priv->authoritycerts_page);
-               ecmc->priv->authoritycerts_page = NULL;
-       }
+       g_clear_pointer (&ecmc->priv->yourcerts_page, cert_page_free);
+       g_clear_pointer (&ecmc->priv->contactcerts_page, cert_page_free);
+       g_clear_pointer (&ecmc->priv->authoritycerts_page, cert_page_free);
 
        if (ecmc->priv->mail_model) {
                gtk_tree_model_foreach (ecmc->priv->mail_model, cm_unref_camel_cert, NULL);
                g_clear_object (&ecmc->priv->mail_model);
        }
 
-       if (ecmc->priv->builder) {
-               g_object_unref (ecmc->priv->builder);
-                       ecmc->priv->builder = NULL;
-       }
+       g_clear_object (&ecmc->priv->builder);
 
        if (ecmc->priv->pref_window) {
                g_signal_handlers_disconnect_matched (ecmc->priv->pref_window, G_SIGNAL_MATCH_DATA, 0, 0, 
NULL, NULL, ecmc);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]