[evolution] Fix/mute issues found by Coverity scan



commit 570c6374806d0f1ec59cf7a72543efe6b5b637be
Author: Milan Crha <mcrha redhat com>
Date:   Fri Nov 15 09:06:57 2013 +0100

    Fix/mute issues found by Coverity scan
    
    This makes the code free of Coverity scan issues.
    It is sometimes quite pedantic and expects/suggests some
    coding habits, thus certain changes may look weird, but for a good
    thing, I hope. The code is also tagged with Coverity scan
    suppressions, to keep the code as is and hide the warning too.
    Also note that Coverity treats g_return_if_fail(), g_assert() and
    similar macros as unreliable, and it's true these can be disabled
    during the compile time, thus it brings in other set of 'weird'
    changes.

 addressbook/gui/contact-editor/e-contact-editor.c  |   38 +++---
 .../contact-list-editor/e-contact-list-editor.c    |   60 +++++----
 addressbook/printing/Makefile.am                   |   21 ---
 addressbook/printing/test-print.c                  |   51 --------
 .../evolution-addressbook-export-list-folders.c    |    2 +-
 calendar/alarm-notify/alarm-notify-dialog.c        |   25 +++-
 calendar/gui/dialogs/comp-editor.c                 |   19 +--
 calendar/gui/dialogs/event-page.c                  |   14 +-
 calendar/gui/dialogs/memo-page.c                   |    8 +-
 calendar/gui/dialogs/recurrence-page.c             |    4 +-
 calendar/gui/e-cal-model-tasks.c                   |    3 +
 calendar/gui/e-cal-model.c                         |    7 +-
 calendar/gui/e-day-view-main-item.c                |    4 +
 calendar/gui/e-day-view.c                          |   66 +++++++---
 calendar/gui/e-day-view.h                          |    2 +-
 calendar/gui/e-meeting-list-view.c                 |   11 +-
 calendar/gui/e-meeting-time-sel.c                  |    6 +-
 calendar/gui/e-week-view-event-item.c              |    2 +-
 calendar/gui/e-week-view.c                         |   20 +--
 calendar/gui/e-weekday-chooser.c                   |    7 +-
 calendar/gui/ea-gnome-calendar.c                   |    7 +-
 calendar/gui/ea-week-view-main-item.c              |    2 -
 calendar/gui/ea-week-view.c                        |   11 --
 calendar/gui/itip-utils.c                          |    9 +-
 calendar/gui/print.c                               |   14 +--
 calendar/importers/icalendar-importer.c            |   44 +++----
 composer/e-msg-composer.c                          |  120 ++++++++---------
 e-util/e-attachment-store.c                        |   12 +-
 e-util/e-attachment.c                              |   17 ++-
 e-util/e-canvas-background.c                       |   14 +-
 e-util/e-canvas.c                                  |   12 +-
 e-util/e-cell-text.c                               |    8 +-
 e-util/e-filter-color.c                            |    3 +-
 e-util/e-filter-rule.c                             |    6 +-
 e-util/e-misc-utils.c                              |    1 +
 e-util/e-name-selector-list.c                      |    5 +-
 e-util/e-send-options.c                            |    2 +
 e-util/e-stock-request.c                           |    7 +-
 e-util/e-table-click-to-add.c                      |    1 +
 e-util/e-table-config.c                            |    2 +-
 e-util/e-table-group-container.c                   |    2 +-
 e-util/e-table-header-item.c                       |    2 +-
 e-util/e-table-header-utils.c                      |    1 +
 e-util/e-table-item.c                              |    9 +-
 e-util/e-text.c                                    |    9 +-
 e-util/gal-a11y-e-cell-tree.c                      |    8 +-
 e-util/gal-a11y-e-cell.c                           |    5 +-
 e-util/gal-a11y-e-table-item.c                     |   61 ++++-----
 e-util/test-calendar.c                             |    7 +-
 em-format/e-mail-formatter-headers.c               |    5 -
 em-format/e-mail-formatter-quote-attachment.c      |    5 +-
 em-format/e-mail-formatter-text-html.c             |    4 +-
 libemail-engine/e-mail-session.c                   |    2 +-
 libemail-engine/e-mail-utils.c                     |    6 -
 libemail-engine/mail-folder-cache.c                |   11 ++-
 libemail-engine/mail-mt.c                          |    2 +
 libgnomecanvas/gnome-canvas-text.c                 |   15 ++-
 mail/e-http-request.c                              |    4 +-
 mail/e-mail-backend.c                              |    6 +-
 mail/e-mail-config-page.c                          |    1 +
 mail/e-mail-migrate.c                              |    9 +-
 mail/e-mail-reader-utils.c                         |    3 +
 mail/e-mail-reader.c                               |    1 -
 mail/em-composer-utils.c                           |    6 +-
 mail/em-filter-rule.c                              |    5 +-
 mail/em-folder-properties.c                        |  136 ++++++++++----------
 mail/em-folder-tree.c                              |   55 +++++----
 mail/em-utils.c                                    |    8 +-
 mail/importers/evolution-mbox-importer.c           |   28 +++-
 mail/importers/mail-importer.c                     |    2 +
 mail/message-list.c                                |   25 ++--
 modules/backup-restore/evolution-backup-tool.c     |    2 +-
 modules/calendar/e-task-shell-view-private.c       |    2 +-
 modules/itip-formatter/e-mail-part-itip.c          |    8 +-
 modules/itip-formatter/itip-view.c                 |   17 ++-
 modules/mail-config/e-mail-config-google-summary.c |    2 +-
 modules/mail-config/e-mail-config-yahoo-summary.c  |    2 +-
 modules/mail/e-mail-shell-view-private.c           |    3 -
 plugins/attachment-reminder/attachment-reminder.c  |    4 +-
 plugins/dbx-import/dbx-importer.c                  |    3 +-
 plugins/email-custom-header/email-custom-header.c  |    1 +
 plugins/external-editor/external-editor.c          |    6 +-
 plugins/mail-to-task/mail-to-task.c                |   42 ++----
 .../mailing-list-actions/mailing-list-actions.c    |    4 +-
 plugins/pst-import/pst-importer.c                  |   11 +-
 plugins/publish-calendar/url-editor-dialog.c       |    3 +
 plugins/save-calendar/save-calendar.c              |   39 +++---
 shell/e-convert-local-mail.c                       |   15 ++-
 shell/e-shell-migrate.c                            |   11 +-
 shell/e-shell-utils.c                              |    2 +-
 shell/e-shell-view.c                               |    1 +
 shell/killev.c                                     |    3 +-
 smime/lib/e-cert-db.c                              |    1 +
 93 files changed, 657 insertions(+), 635 deletions(-)
---
diff --git a/addressbook/gui/contact-editor/e-contact-editor.c 
b/addressbook/gui/contact-editor/e-contact-editor.c
index 1a771fe..27c0f5b 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.c
+++ b/addressbook/gui/contact-editor/e-contact-editor.c
@@ -433,6 +433,7 @@ style_makes_sense (const EContactName *name,
                        else
                                return FALSE;
                }
+               return FALSE;
        case 3:
                if (company && *company)
                        return TRUE;
@@ -1125,7 +1126,7 @@ extract_email (EContactEditor *editor)
 {
        GList *attr_list = NULL;
        GList *old_attr_list;
-       GList *l, *l_next;
+       GList *ll;
        gint   i;
 
        for (i = 1; i <= EMAIL_SLOTS; i++) {
@@ -1157,14 +1158,12 @@ extract_email (EContactEditor *editor)
        /* Splice in the old attributes, minus the EMAIL_SLOTS first */
 
        old_attr_list = e_contact_get_attributes (editor->contact, E_CONTACT_EMAIL);
-       for (l = old_attr_list, i = 1; l && i <= EMAIL_SLOTS; l = l_next, i++) {
-               l_next = g_list_next (l);
-
-               e_vcard_attribute_free (l->data);
-               l = g_list_delete_link (l, l);
+       for (ll = old_attr_list, i = 1; ll && i <= EMAIL_SLOTS; i++) {
+               e_vcard_attribute_free (ll->data);
+               ll = g_list_delete_link (ll, ll);
        }
 
-       old_attr_list = l;
+       old_attr_list = ll;
        attr_list = g_list_concat (attr_list, old_attr_list);
 
        e_contact_set_attributes (editor->contact, E_CONTACT_EMAIL, attr_list);
@@ -1468,7 +1467,7 @@ extract_phone (EContactEditor *editor)
 {
        GList *attr_list = NULL;
        GList *old_attr_list;
-       GList *l, *l_next;
+       GList *ll;
        gint   i;
 
        for (i = 1; i <= PHONE_SLOTS; i++) {
@@ -1509,14 +1508,12 @@ extract_phone (EContactEditor *editor)
        /* Splice in the old attributes, minus the PHONE_SLOTS first */
 
        old_attr_list = get_attributes_named (E_VCARD (editor->contact), "TEL");
-       for (l = old_attr_list, i = 1; l && i <= PHONE_SLOTS; l = l_next, i++) {
-               l_next = g_list_next (l);
-
-               e_vcard_attribute_free (l->data);
-               l = g_list_delete_link (l, l);
+       for (ll = old_attr_list, i = 1; ll && i <= PHONE_SLOTS; i++) {
+               e_vcard_attribute_free (ll->data);
+               ll = g_list_delete_link (ll, ll);
        }
 
-       old_attr_list = l;
+       old_attr_list = ll;
        attr_list = g_list_concat (attr_list, old_attr_list);
 
        set_attributes_named (E_VCARD (editor->contact), "TEL", attr_list);
@@ -1913,7 +1910,7 @@ extract_im (EContactEditor *editor)
        for (i = 0; i < G_N_ELEMENTS (im_service); i++) {
                GList *old_service_attr_list;
                gint   filled_in_slots;
-               GList *l, *l_next;
+               GList *ll;
                gint   j;
 
                /* Splice in the old attributes, minus the filled_in_slots first */
@@ -1925,15 +1922,14 @@ extract_im (EContactEditor *editor)
                        g_list_length (old_service_attr_list));
                remaining_slots -= filled_in_slots;
 
-               for (l = old_service_attr_list, j = 0;
-                       l && j < filled_in_slots; l = l_next, j++) {
-                       l_next = g_list_next (l);
+               for (ll = old_service_attr_list, j = 0;
+                    ll && j < filled_in_slots; j++) {
 
-                       e_vcard_attribute_free (l->data);
-                       l = g_list_delete_link (l, l);
+                       e_vcard_attribute_free (ll->data);
+                       ll = g_list_delete_link (ll, ll);
                }
 
-               old_service_attr_list = l;
+               old_service_attr_list = ll;
                service_attr_list[i] = g_list_concat (
                        service_attr_list[i], old_service_attr_list);
 
diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c 
b/addressbook/gui/contact-list-editor/e-contact-list-editor.c
index 4bcaa9b..8a5dbf0 100644
--- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c
+++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c
@@ -502,9 +502,9 @@ contact_list_editor_selection_changed_cb (GtkTreeSelection *selection,
                gtk_widget_set_sensitive (WIDGET (UP_BUTTON), FALSE);
        }
 
-       gtk_tree_model_get_iter (model, &iter, g_list_last (selected)->data);
        /* Item below last selected exists => enable Down/Bottom buttons */
-       if (gtk_tree_model_iter_next (model, &iter)) {
+       if (gtk_tree_model_get_iter (model, &iter, g_list_last (selected)->data) &&
+           gtk_tree_model_iter_next (model, &iter)) {
                gtk_widget_set_sensitive (WIDGET (DOWN_BUTTON), TRUE);
                gtk_widget_set_sensitive (WIDGET (BOTTOM_BUTTON), TRUE);
        } else {
@@ -888,9 +888,11 @@ contact_list_editor_remove_button_clicked_cb (GtkWidget *widget)
                path = gtk_tree_row_reference_get_path (reference);
                valid = gtk_tree_model_get_iter (model, &iter, path);
                gtk_tree_path_free (path);
-               g_assert (valid);
-
-               e_contact_list_model_remove_row (E_CONTACT_LIST_MODEL (model), &iter);
+               if (valid) {
+                       e_contact_list_model_remove_row (E_CONTACT_LIST_MODEL (model), &iter);
+               } else {
+                       g_warn_if_reached ();
+               }
                gtk_tree_row_reference_free (reference);
        }
 
@@ -967,7 +969,9 @@ contact_list_editor_select_button_clicked_cb (GtkWidget *widget)
        for (iter = list; iter != NULL; iter = iter->next) {
                EDestination *destination = iter->data;
 
-               contact_list_editor_add_destination (widget, destination);
+               if (!contact_list_editor_add_destination (widget, destination))
+                       g_warning ("%s: Failed to add destination", G_STRFUNC);
+
                e_destination_store_remove_destination (store, destination);
        }
 
@@ -1066,9 +1070,9 @@ contact_list_editor_top_button_clicked_cb (GtkButton *button)
 
        for (l = references; l; l = l->next) {
                path = gtk_tree_row_reference_get_path (l->data);
-               gtk_tree_model_get_iter (model, &iter, path);
-               gtk_tree_store_move_after (
-                       GTK_TREE_STORE (model), &iter, NULL);
+               if (gtk_tree_model_get_iter (model, &iter, path))
+                       gtk_tree_store_move_after (
+                               GTK_TREE_STORE (model), &iter, NULL);
                gtk_tree_path_free (path);
        }
 
@@ -1105,16 +1109,19 @@ contact_list_editor_up_button_clicked_cb (GtkButton *button)
        /* Get iter of item above the first selected item */
        path = gtk_tree_path_copy (selected->data);
        gtk_tree_path_prev (path);
-       gtk_tree_model_get_iter (model, &iter, path);
+       if (!gtk_tree_model_get_iter (model, &iter, path)) {
+               gtk_tree_path_free (path);
+               g_list_free_full (selected, (GDestroyNotify) gtk_tree_path_free);
+               return;
+       }
        gtk_tree_path_free (path);
 
        /* Get iter of the last selected item */
-       gtk_tree_model_get_iter (model, &iter2, g_list_last (selected)->data);
+       if (gtk_tree_model_get_iter (model, &iter2, g_list_last (selected)->data)) {
+               gtk_tree_store_move_after (GTK_TREE_STORE (model), &iter, &iter2);
+       }
 
-       gtk_tree_store_move_after (GTK_TREE_STORE (model), &iter, &iter2);
-
-       g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL);
-       g_list_free (selected);
+       g_list_free_full (selected, (GDestroyNotify) gtk_tree_path_free);
 
        contact_list_editor_selection_changed_cb (selection, editor);
 }
@@ -1141,16 +1148,21 @@ contact_list_editor_down_button_clicked_cb (GtkButton *button)
        selected = gtk_tree_selection_get_selected_rows (selection, &model);
 
        /* Iter of the first selected item */
-       gtk_tree_model_get_iter (model, &iter, selected->data);
+       if (!gtk_tree_model_get_iter (model, &iter, selected->data)) {
+               g_list_free_full (selected, (GDestroyNotify) gtk_tree_path_free);
+               return;
+       }
 
        /* Iter of item below the last selected item */
-       gtk_tree_model_get_iter (model, &iter2, g_list_last (selected)->data);
-       gtk_tree_model_iter_next (model, &iter2);
+       if (!gtk_tree_model_get_iter (model, &iter2, g_list_last (selected)->data) ||
+           !gtk_tree_model_iter_next (model, &iter2)) {
+               g_list_free_full (selected, (GDestroyNotify) gtk_tree_path_free);
+               return;
+       }
 
        gtk_tree_store_move_before (GTK_TREE_STORE (model), &iter2, &iter);
 
-       g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL);
-       g_list_free (selected);
+       g_list_free_full (selected, (GDestroyNotify) gtk_tree_path_free);
 
        contact_list_editor_selection_changed_cb (selection, editor);
 }
@@ -1828,10 +1840,10 @@ save_contact_list (GtkTreeModel *model,
                        g_free (uid);
 
                        /* Set new_iter to first child of iter */
-                       gtk_tree_model_iter_children (model, &new_iter, iter);
-
-                       /* Go recursive */
-                       save_contact_list (model, &new_iter, attrs, parent_id);
+                       if (gtk_tree_model_iter_children (model, &new_iter, iter)) {
+                               /* Go recursive */
+                               save_contact_list (model, &new_iter, attrs, parent_id);
+                       }
                } else {
                        attr = e_vcard_attribute_new (NULL, EVC_EMAIL);
                        e_destination_export_to_vcard_attribute (dest, attr);
diff --git a/addressbook/printing/Makefile.am b/addressbook/printing/Makefile.am
index c51eb14..58f2ca1 100644
--- a/addressbook/printing/Makefile.am
+++ b/addressbook/printing/Makefile.am
@@ -29,27 +29,6 @@ libecontactprint_la_LIBADD =                                 \
        $(GNOME_PLATFORM_LIBS)                                  \
        $(GTKHTML_LIBS)
 
-noinst_PROGRAMS = contact-print-test
-
-contact_print_test_CPPFLAGS = \
-       $(AM_CPPFLAGS)                          \
-       -DG_LOG_DOMAIN=\"addressbook-printing\" \
-       -I$(top_srcdir)/addressbook             \
-       -I$(top_srcdir)                         \
-       -DEVOLUTION_ECPSDIR=\""$(ecpsdir)"\"    \
-       $(EVOLUTION_DATA_SERVER_CFLAGS)         \
-       $(GNOME_PLATFORM_CFLAGS)
-
-contact_print_test_SOURCES = test-print.c
-
-contact_print_test_LDADD =     \
-       libecontactprint.la                                     \
-       $(top_builddir)/addressbook/util/libeabutil.la          \
-       $(top_builddir)/shell/libevolution-shell.la             \
-       $(top_builddir)/e-util/libevolution-util.la             \
-       $(EVOLUTION_DATA_SERVER_LIBS)                           \
-       $(GNOME_PLATFORM_LIBS)
-
 EXTRA_DIST =           \
        $(ecps_DATA)
 
diff --git a/addressbook/tools/evolution-addressbook-export-list-folders.c 
b/addressbook/tools/evolution-addressbook-export-list-folders.c
index 2ff9d79..538ea4f 100644
--- a/addressbook/tools/evolution-addressbook-export-list-folders.c
+++ b/addressbook/tools/evolution-addressbook-export-list-folders.c
@@ -67,7 +67,7 @@ action_list_folders_init (ActionContext *p_actctx)
                client = e_book_client_connect_sync (source, NULL, &error);
 
                /* Sanity check. */
-               g_return_if_fail (
+               g_warn_if_fail (
                        ((client != NULL) && (error == NULL)) ||
                        ((client == NULL) && (error != NULL)));
 
diff --git a/calendar/alarm-notify/alarm-notify-dialog.c b/calendar/alarm-notify/alarm-notify-dialog.c
index ac6ce49..0eb0774 100644
--- a/calendar/alarm-notify/alarm-notify-dialog.c
+++ b/calendar/alarm-notify/alarm-notify-dialog.c
@@ -155,7 +155,10 @@ dialog_response_cb (GtkDialog *dialog,
                gtk_tree_model_get (treemodel, &iter, ALARM_FUNCINFO_COLUMN, &funcinfo, -1);
        }
 
-       g_return_if_fail (funcinfo);
+       if (!funcinfo) {
+               g_warn_if_reached ();
+               return;
+       }
 
        switch (response_id) {
        case GTK_RESPONSE_CLOSE:
@@ -178,7 +181,10 @@ edit_pressed_cb (GtkButton *button,
        if (gtk_tree_selection_get_selected (selection, &model, &iter))
                gtk_tree_model_get (model, &iter, ALARM_FUNCINFO_COLUMN, &funcinfo, -1);
 
-       g_return_if_fail (funcinfo);
+       if (!funcinfo) {
+               g_warn_if_reached ();
+               return;
+       }
 
        (* funcinfo->func) (ALARM_NOTIFY_EDIT, -1, funcinfo->func_data);
 }
@@ -196,7 +202,10 @@ print_pressed_cb (GtkButton *button,
        if (gtk_tree_selection_get_selected (selection, &model, &iter))
                gtk_tree_model_get (model, &iter, ALARM_FUNCINFO_COLUMN, &funcinfo, -1);
 
-       g_return_if_fail (funcinfo);
+       if (!funcinfo) {
+               g_warn_if_reached ();
+               return;
+       }
 
        (* funcinfo->func) (ALARM_NOTIFY_PRINT, -1, funcinfo->func_data);
 }
@@ -219,7 +228,10 @@ snooze_pressed_cb (GtkButton *button,
        if (gtk_tree_selection_get_selected (selection, &model, &iter))
                gtk_tree_model_get (model, &iter, ALARM_FUNCINFO_COLUMN, &funcinfo, -1);
 
-       g_return_if_fail (funcinfo);
+       if (!funcinfo) {
+               g_warn_if_reached ();
+               return;
+       }
 
        snooze_timeout = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (an->snooze_time_min));
        snooze_timeout += 60 * (gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (an->snooze_time_hrs)));
@@ -248,7 +260,10 @@ dismiss_pressed_cb (GtkButton *button,
                if (gtk_tree_selection_get_selected (selection, &model, &iter))
                        gtk_tree_model_get (model, &iter, ALARM_FUNCINFO_COLUMN, &funcinfo, -1);
 
-               g_return_if_fail (funcinfo);
+               if (!funcinfo) {
+                       g_warn_if_reached ();
+                       return;
+               }
 
                (* funcinfo->func) (ALARM_NOTIFY_DISMISS, -1, funcinfo->func_data);
        }
diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c
index 0459e47..0c831de 100644
--- a/calendar/gui/dialogs/comp-editor.c
+++ b/calendar/gui/dialogs/comp-editor.c
@@ -329,6 +329,7 @@ get_attachment_list (CompEditor *editor)
 
        /* We can't return until we have results, so crank
         * the main loop until the callback gets triggered. */
+       /* coverity[loop_condition] */
        while (!status.done)
                gtk_main_iteration ();
 
@@ -936,25 +937,21 @@ save_and_close_editor (CompEditor *editor,
 
        if (e_attachment_store_get_num_loading (store) > 0) {
                gboolean response = 1;
-       /*FIXME: Cannot use mail functions from calendar!!!! */
-#if 0
                ECalComponentVType vtype = e_cal_component_get_vtype (editor->priv->comp);
 
                if (vtype == E_CAL_COMPONENT_EVENT)
-                       response = em_utils_prompt_user (
-                               (GtkWindow *) widget,
-                               NULL,
+                       response = e_alert_run_dialog_for_args (
+                               GTK_WINDOW (editor),
                                "calendar:ask-send-event-pending-download",
                                NULL);
                else
-                       response = em_utils_prompt_user (
-                               (GtkWindow *) widget,
-                               NULL,
+                       response = e_alert_run_dialog_for_args (
+                               GTK_WINDOW (editor),
                                "calendar:ask-send-task-pending-download",
                                NULL);
-#endif
-       if (!response)
-               return;
+
+               if (response != GTK_RESPONSE_YES)
+                       return;
        }
 
        if (e_client_is_readonly (E_CLIENT (priv->cal_client))) {
diff --git a/calendar/gui/dialogs/event-page.c b/calendar/gui/dialogs/event-page.c
index f4d9658..09cb8c8 100644
--- a/calendar/gui/dialogs/event-page.c
+++ b/calendar/gui/dialogs/event-page.c
@@ -991,12 +991,14 @@ event_page_load_locations_list (CompEditorPage *page,
        }
 
        error = NULL;
-       g_file_get_contents (file_name, &contents, NULL, &error);
-       if (error != NULL) {
-               g_warning (
-                       "%s: Failed to load locations list: %s",
-                       G_STRFUNC, error->message);
-               g_error_free (error);
+       if (!g_file_get_contents (file_name, &contents, NULL, &error)) {
+               if (error != NULL) {
+                       g_warning (
+                               "%s: Failed to load locations list: %s",
+                               G_STRFUNC, error->message);
+                       g_error_free (error);
+               }
+
                g_free (file_name);
                return;
        }
diff --git a/calendar/gui/dialogs/memo-page.c b/calendar/gui/dialogs/memo-page.c
index 1fd9221..0e06d19 100644
--- a/calendar/gui/dialogs/memo-page.c
+++ b/calendar/gui/dialogs/memo-page.c
@@ -605,12 +605,10 @@ fill_comp_with_recipients (ENameSelector *name_selector,
 
                for (l = list_dests; l; l = l->next) {
                        EDestination *dest = l->data;
-                       const gchar *attendee = NULL;
+                       const gchar *attendee;
 
-                       /* If we couldn't get the attendee prior,
-                        * get the email address as the default. */
-                       if (attendee == NULL || *attendee == '\0')
-                               attendee = e_destination_get_email (dest);
+                       /* Get the email address as the default. */
+                       attendee = e_destination_get_email (dest);
 
                        if (attendee == NULL || *attendee == '\0')
                                continue;
diff --git a/calendar/gui/dialogs/recurrence-page.c b/calendar/gui/dialogs/recurrence-page.c
index 638bfaf..7828868 100644
--- a/calendar/gui/dialogs/recurrence-page.c
+++ b/calendar/gui/dialogs/recurrence-page.c
@@ -837,8 +837,10 @@ simple_recur_to_comp (RecurrencePage *rpage,
 
                if (month_num == MONTH_NUM_LAST)
                        month_num = -1;
-               else
+               else if (month_num != -1)
                        month_num++;
+               else
+                       g_warn_if_reached ();
 
                switch (month_day) {
                case MONTH_DAY_NTH:
diff --git a/calendar/gui/e-cal-model-tasks.c b/calendar/gui/e-cal-model-tasks.c
index c14371c..d4315f1 100644
--- a/calendar/gui/e-cal-model-tasks.c
+++ b/calendar/gui/e-cal-model-tasks.c
@@ -588,6 +588,9 @@ set_status (ECalModelComponent *comp_data,
        case ICAL_STATUS_COMPLETED:
                ensure_task_complete (comp_data, -1);
                break;
+
+       /* to make compiler happy */
+       /* coverity[dead_error_begin] */
        default:
                break;
        }
diff --git a/calendar/gui/e-cal-model.c b/calendar/gui/e-cal-model.c
index 5748e23..a4f06ef 100644
--- a/calendar/gui/e-cal-model.c
+++ b/calendar/gui/e-cal-model.c
@@ -2108,12 +2108,7 @@ e_cal_model_update_comp_time (ECalModel *model,
 
                /* If the TZID is set to "UTC", we don't want to save the TZID. */
                if (tzid && strcmp (tzid, "UTC")) {
-                       if (param) {
-                               icalparameter_set_tzid (param, (gchar *) tzid);
-                       } else {
-                               param = icalparameter_new_tzid ((gchar *) tzid);
-                               icalproperty_add_parameter (prop, param);
-                       }
+                       icalparameter_set_tzid (param, (gchar *) tzid);
                } else {
                        icalproperty_remove_parameter (prop, ICAL_TZID_PARAMETER);
                }
diff --git a/calendar/gui/e-day-view-main-item.c b/calendar/gui/e-day-view-main-item.c
index cdf167e..ef233f4 100644
--- a/calendar/gui/e-day-view-main-item.c
+++ b/calendar/gui/e-day-view-main-item.c
@@ -1013,6 +1013,10 @@ day_view_main_item_draw (GnomeCanvasItem *canvas_item,
        g_return_if_fail (day_view != NULL);
 
        days_shown = e_day_view_get_days_shown (day_view);
+       if (days_shown <= 0) {
+               g_warn_if_reached ();
+               return;
+       }
 
        cal_view = E_CALENDAR_VIEW (day_view);
        time_divisions = e_calendar_view_get_time_divisions (cal_view);
diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c
index 93f6640..41fbc41 100644
--- a/calendar/gui/e-day-view.c
+++ b/calendar/gui/e-day-view.c
@@ -1540,10 +1540,11 @@ day_view_focus (GtkWidget *widget,
                        e_day_view_ensure_rows_visible (
                                day_view,
                                start_row, end_row);
+       } else if (new_day != -1) {
+               e_day_view_start_editing_event (
+                       day_view, new_day,
+                       new_event_num, NULL);
        }
-       e_day_view_start_editing_event (
-               day_view, new_day,
-               new_event_num, NULL);
 
        return TRUE;
 }
@@ -1771,6 +1772,8 @@ day_view_get_visible_time_range (ECalendarView *cal_view,
                return FALSE;
 
        days_shown = e_day_view_get_days_shown (day_view);
+       if (days_shown <= 0)
+               return FALSE;
 
        *start_time = day_view->day_starts[0];
        *end_time = day_view->day_starts[days_shown];
@@ -3417,6 +3420,8 @@ e_day_view_recalc_day_starts (EDayView *day_view,
        GDate dt;
 
        days_shown = e_day_view_get_days_shown (day_view);
+       if (days_shown <= 0)
+               return;
 
        day_view->day_starts[0] = start_time;
        for (day = 1; day <= days_shown; day++) {
@@ -4321,11 +4326,13 @@ e_day_view_on_long_event_click (EDayView *day_view,
                day_view->drag_event_x = event_x;
                day_view->drag_event_y = event_y;
 
-               e_day_view_convert_position_in_top_canvas (
+               pos = e_day_view_convert_position_in_top_canvas (
                        day_view,
                        event_x, event_y,
                        &day, NULL);
-               day_view->drag_event_offset = day - start_day;
+
+               if (pos != E_CALENDAR_VIEW_POS_NONE && pos != E_CALENDAR_VIEW_POS_OUTSIDE)
+                       day_view->drag_event_offset = day - start_day;
        }
 }
 
@@ -4428,13 +4435,16 @@ e_day_view_on_event_click (EDayView *day_view,
                day_view->drag_event_x = event_x;
                day_view->drag_event_y = event_y;
 
-               e_day_view_convert_position_in_main_canvas (
+               pos = e_day_view_convert_position_in_main_canvas (
                        day_view,
                        event_x, event_y,
                        &tmp_day, &row,
                        NULL);
-               start_row = event->start_minute / time_divisions;
-               day_view->drag_event_offset = row - start_row;
+
+               if (pos != E_CALENDAR_VIEW_POS_NONE && pos != E_CALENDAR_VIEW_POS_OUTSIDE) {
+                       start_row = event->start_minute / time_divisions;
+                       day_view->drag_event_offset = row - start_row;
+               }
        }
 }
 
@@ -6882,7 +6892,10 @@ cancel_editing (EDayView *day_view)
        day = day_view->editing_event_day;
        event_num = day_view->editing_event_num;
 
-       g_return_if_fail (day != -1);
+       if (day == -1) {
+               g_warn_if_reached ();
+               return;
+       }
 
        if (day == E_DAY_VIEW_LONG_EVENT) {
                if (!is_array_index_in_bounds (day_view->long_events, event_num))
@@ -7005,11 +7018,16 @@ e_day_view_on_text_item_event (GnomeCanvasItem *item,
                break;
 
        case GDK_BUTTON_RELEASE:
-                       if (day_view->resize_event_num != -1)
-                               day_view->resize_event_num = -1;
+               if (day_view->resize_event_num != -1)
+                       day_view->resize_event_num = -1;
 
-                       if (day_view->drag_event_num != -1)
-                               day_view->drag_event_num = -1;
+               if (day_view->drag_event_num != -1)
+                       day_view->drag_event_num = -1;
+               tooltip_destroy (day_view, item);
+               /* Only let the EText handle the event while editing. */
+               if (!E_TEXT (item)->editing)
+                       g_signal_stop_emission_by_name (item, "event");
+               break;
 
        case GDK_BUTTON_PRESS:
                tooltip_destroy (day_view, item);
@@ -8441,12 +8459,12 @@ e_day_view_update_main_canvas_drag (EDayView *day_view,
                        end_row = start_row;
 
                num_rows = end_row - start_row + 1;
-       }
 
-       if (event && day_view->drag_event_day == day && start_row == row) {
-               cols_in_row = day_view->cols_per_row[day][row];
-               start_col = event->start_row_or_col;
-               num_columns = event->num_columns;
+               if (day_view->drag_event_day == day && start_row == row) {
+                       cols_in_row = day_view->cols_per_row[day][row];
+                       start_col = event->start_row_or_col;
+                       num_columns = event->num_columns;
+               }
        }
 
        item_x = day_view->day_offsets[day]
@@ -8561,7 +8579,11 @@ e_day_view_on_drag_begin (GtkWidget *widget,
        event_num = day_view->drag_event_num;
 
        /* These should both be set. */
-       g_return_if_fail (day != -1);
+       if (day == -1) {
+               g_warn_if_reached ();
+               return;
+       }
+
        g_return_if_fail (event_num != -1);
 
        if (day == E_DAY_VIEW_LONG_EVENT) {
@@ -8639,7 +8661,11 @@ e_day_view_on_drag_data_get (GtkWidget *widget,
        event_num = day_view->drag_event_num;
 
        /* These should both be set. */
-       g_return_if_fail (day != -1);
+       if (day == -1) {
+               g_warn_if_reached ();
+               return;
+       }
+
        g_return_if_fail (event_num != -1);
 
        if (day == E_DAY_VIEW_LONG_EVENT) {
diff --git a/calendar/gui/e-day-view.h b/calendar/gui/e-day-view.h
index 19d735d..e02567f 100644
--- a/calendar/gui/e-day-view.h
+++ b/calendar/gui/e-day-view.h
@@ -277,7 +277,7 @@ struct _EDayView {
 
        /* This is the width & offset of each of the day columns in the
         * display. */
-       gint day_widths[E_DAY_VIEW_MAX_DAYS];
+       gint day_widths[E_DAY_VIEW_MAX_DAYS + 1];
        gint day_offsets[E_DAY_VIEW_MAX_DAYS + 1];
 
        /* An array holding the number of columns in each row, in each day.
diff --git a/calendar/gui/e-meeting-list-view.c b/calendar/gui/e-meeting-list-view.c
index e211d21..0b584a1 100644
--- a/calendar/gui/e-meeting-list-view.c
+++ b/calendar/gui/e-meeting-list-view.c
@@ -307,15 +307,16 @@ e_meeting_list_view_remove_attendee_from_name_selector (EMeetingListView *view,
                EDestination *des = l->data;
 
                if (e_destination_is_evolution_list (des)) {
-                       GList *l, *dl;
+                       GList *l2, *dl;
 
                        dl = (GList *) e_destination_list_get_dests (des);
 
-                       for (l = dl; l; l = l->next) {
-                               attendee = e_destination_get_email (l->data);
+                       for (l2 = dl; l2; l2 = l2->next) {
+                               attendee = e_destination_get_email (l2->data);
                                if (madd && attendee && g_str_equal (madd, attendee)) {
-                                       g_object_unref (l->data);
-                                       l = g_list_remove (l, l->data);
+                                       g_object_unref (l2->data);
+                                       /* coverity[returned_pointer] */
+                                       l2 = g_list_remove (l2, l2->data);
                                        break;
                                }
                        }
diff --git a/calendar/gui/e-meeting-time-sel.c b/calendar/gui/e-meeting-time-sel.c
index 674059d..f896570 100644
--- a/calendar/gui/e-meeting-time-sel.c
+++ b/calendar/gui/e-meeting-time-sel.c
@@ -997,7 +997,11 @@ e_meeting_time_selector_create_no_info_pattern (EMeetingTimeSelector *mts)
                CAIRO_CONTENT_COLOR, 8, 8);
        cr = cairo_create (surface);
 
-       gdk_color_parse ("white", &color);
+       color.pixel = 0;
+       color.red = 0xFFFF;
+       color.green = 0xFFFF;
+       color.blue = 0xFFFF;
+
        gdk_cairo_set_source_color (cr, &color);
        cairo_paint (cr);
 
diff --git a/calendar/gui/e-week-view-event-item.c b/calendar/gui/e-week-view-event-item.c
index 298319c..4fa4966 100644
--- a/calendar/gui/e-week-view-event-item.c
+++ b/calendar/gui/e-week-view-event-item.c
@@ -888,7 +888,7 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
                        draw_end = FALSE;
                        break;
                default:
-                       g_return_if_reached ();
+                       g_warn_if_reached ();
                        draw_start = FALSE;
                        draw_end = FALSE;
                        break;
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c
index a45cb0c..7e1be0a 100644
--- a/calendar/gui/e-week-view.c
+++ b/calendar/gui/e-week-view.c
@@ -1259,7 +1259,6 @@ week_view_set_selected_time_range (ECalendarView *cal_view,
 {
        GDate date, end_date;
        gint num_days;
-       gboolean update_adjustment_value = FALSE;
        EWeekView *week_view = E_WEEK_VIEW (cal_view);
 
        g_return_if_fail (E_IS_WEEK_VIEW (week_view));
@@ -1293,18 +1292,6 @@ week_view_set_selected_time_range (ECalendarView *cal_view,
                week_view->selection_start_day,
                num_days);
 
-       /* Reset the adjustment value to 0 if the base address has changed.
-        * Note that we do this after updating first_day_shown so that our
-        * signal handler will not try to reload the events. */
-       if (update_adjustment_value) {
-               GtkRange *range;
-               GtkAdjustment *adjustment;
-
-               range = GTK_RANGE (week_view->vscrollbar);
-               adjustment = gtk_range_get_adjustment (range);
-               gtk_adjustment_set_value (adjustment, 0);
-       }
-
        gtk_widget_queue_draw (week_view->main_canvas);
 }
 
@@ -3703,7 +3690,7 @@ e_week_view_start_editing_event (EWeekView *week_view,
                editing = &g_array_index (week_view->events, EWeekViewEvent, week_view->editing_event_num);
 
                /* do not change to other part of same component - the event is spread into more days */
-               if (editing && event && editing->comp_data == event->comp_data)
+               if (editing && editing->comp_data == event->comp_data)
                        return FALSE;
        }
 
@@ -4828,7 +4815,10 @@ e_week_view_on_jump_button_event (GnomeCanvasItem *item,
                                break;
                }
 
-               g_return_val_if_fail (day < E_WEEK_VIEW_MAX_WEEKS * 7, FALSE);
+               if (day >= E_WEEK_VIEW_MAX_WEEKS * 7) {
+                       g_warn_if_reached ();
+                       return FALSE;
+               }
 
                if (focus_event->in) {
                        week_view->focused_jump_button = day;
diff --git a/calendar/gui/e-weekday-chooser.c b/calendar/gui/e-weekday-chooser.c
index ef459e5..05757a5 100644
--- a/calendar/gui/e-weekday-chooser.c
+++ b/calendar/gui/e-weekday-chooser.c
@@ -480,7 +480,10 @@ day_event_cb (GnomeCanvasItem *item,
                        break;
        }
 
-       g_return_val_if_fail (ii < 7, FALSE);
+       if (ii >= 7) {
+               g_warn_if_reached ();
+               return FALSE;
+       }
 
        chooser->priv->focus_day = e_weekday_add_days (
                chooser->priv->week_start_day, ii);
@@ -634,7 +637,7 @@ e_weekday_chooser_set_blocked (EWeekdayChooser *chooser,
 GDateWeekday
 e_weekday_chooser_get_week_start_day (EWeekdayChooser *chooser)
 {
-       g_return_val_if_fail (E_IS_WEEKDAY_CHOOSER (chooser), -1);
+       g_return_val_if_fail (E_IS_WEEKDAY_CHOOSER (chooser), G_DATE_BAD_WEEKDAY);
 
        return chooser->priv->week_start_day;
 }
diff --git a/calendar/gui/ea-gnome-calendar.c b/calendar/gui/ea-gnome-calendar.c
index 7edf52d..9fd4856 100644
--- a/calendar/gui/ea-gnome-calendar.c
+++ b/calendar/gui/ea-gnome-calendar.c
@@ -162,8 +162,11 @@ ea_gnome_calendar_get_label_description (GnomeCalendar *gcal)
        view_type = gnome_calendar_get_view (gcal);
        calendar_view = gnome_calendar_get_calendar_view (gcal, view_type);
 
-       e_calendar_view_get_visible_time_range (
-               calendar_view, &start_time, &end_time);
+       if(!e_calendar_view_get_visible_time_range (
+               calendar_view, &start_time, &end_time)) {
+               g_warn_if_reached ();
+               return NULL;
+       }
 
        start_tt = icaltime_from_timet_with_zone (start_time, FALSE, zone);
        start_tm.tm_year = start_tt.year - 1900;
diff --git a/calendar/gui/ea-week-view-main-item.c b/calendar/gui/ea-week-view-main-item.c
index 3aa571d..20c86aa 100644
--- a/calendar/gui/ea-week-view-main-item.c
+++ b/calendar/gui/ea-week-view-main-item.c
@@ -1142,8 +1142,6 @@ table_interface_get_column_description (AtkTable *table,
                case 6:
                        g_snprintf (buffer,128,"Sunday");
                        break;
-               default:
-                       break;
                }
 
                ea_cell_table_set_column_label (cell_data, in_col, buffer);
diff --git a/calendar/gui/ea-week-view.c b/calendar/gui/ea-week-view.c
index 24d6e8d..4d77cda 100644
--- a/calendar/gui/ea-week-view.c
+++ b/calendar/gui/ea-week-view.c
@@ -232,14 +232,9 @@ ea_week_view_get_n_children (AtkObject *accessible)
 
                event = &g_array_index (week_view->events,
                                        EWeekViewEvent, event_index);
-               if (!event)
-                       continue;
                span = &g_array_index (week_view->spans, EWeekViewEventSpan,
                                       event->spans_index + 0);
 
-               if (!span)
-                       continue;
-
                /* at least one of the event spans is visible, count it */
                if (span->text_item)
                        ++count;
@@ -299,15 +294,9 @@ ea_week_view_ref_child (AtkObject *accessible,
 
                event = &g_array_index (week_view->events,
                                        EWeekViewEvent, event_index);
-               if (!event)
-                       continue;
-
                span = &g_array_index (week_view->spans, EWeekViewEventSpan,
                                       event->spans_index + span_num);
 
-               if (!span)
-                       continue;
-
                current_day = span->start_day;
                if (span->text_item)
                        ++count;
diff --git a/calendar/gui/itip-utils.c b/calendar/gui/itip-utils.c
index d8cc740..1a48a29 100644
--- a/calendar/gui/itip-utils.c
+++ b/calendar/gui/itip-utils.c
@@ -634,6 +634,7 @@ comp_from (ECalComponentItipMethod method,
                        return sender;
                if (!e_cal_component_has_attendees (comp))
                        return NULL;
+               /* coverity[fallthrough] */
 
        case E_CAL_COMPONENT_METHOD_CANCEL:
 
@@ -1844,7 +1845,6 @@ reply_to_calendar_comp (ESourceRegistry *registry,
        ECalComponent *comp = NULL;
        icalcomponent *top_level = NULL;
        icaltimezone *default_zone;
-       GSList *users = NULL;
        gchar *subject = NULL;
        gchar *ical_string = NULL;
        gboolean retval = FALSE;
@@ -1865,7 +1865,7 @@ reply_to_calendar_comp (ESourceRegistry *registry,
 
        /* Recipients */
        destinations = comp_to_list (
-               registry, method, comp, users, reply_all, NULL);
+               registry, method, comp, NULL, reply_all, NULL);
 
        /* Subject information */
        subject = comp_subject (registry, method, comp);
@@ -2003,11 +2003,6 @@ reply_to_calendar_comp (ESourceRegistry *registry,
        if (top_level != NULL)
                icalcomponent_free (top_level);
 
-       if (users) {
-               g_slist_foreach (users, (GFunc) g_free, NULL);
-               g_slist_free (users);
-       }
-
        g_free (subject);
        g_free (ical_string);
        return retval;
diff --git a/calendar/gui/print.c b/calendar/gui/print.c
index 13f195c..c902a1c 100644
--- a/calendar/gui/print.c
+++ b/calendar/gui/print.c
@@ -1654,8 +1654,10 @@ print_day_details (GtkPrintContext *context,
 
                        /* this ugly thing is here only to get rid of compiler warning
                         * about unused 'jump_xpm_focused' */
-                       if (pixbuf)
+                       if (pixbuf) {
+                               /* coverity[dead_error_line] */
                                xpm = (const gchar **) jump_xpm_focused;
+                       }
 
                        pixbuf = gdk_pixbuf_new_from_xpm_data (xpm);
                }
@@ -2003,11 +2005,6 @@ print_week_event (GtkPrintContext *context,
                        if (!pixbuf) {
                                const gchar **xpm = (const gchar **) jump_xpm;
 
-                               /* this ugly thing is here only to get rid of compiler warning
-                                * about unused 'jump_xpm_focused' */
-                               if (pixbuf)
-                                       xpm = (const gchar **) jump_xpm_focused;
-
                                pixbuf = gdk_pixbuf_new_from_xpm_data (xpm);
                        }
 
@@ -2840,11 +2837,6 @@ print_work_week_day_details (GtkPrintContext *context,
                if (!pixbuf) {
                        const gchar **xpm = (const gchar **) jump_xpm;
 
-                       /* this ugly thing is here only to get rid of compiler warning
-                        * about unused 'jump_xpm_focused' */
-                       if (pixbuf)
-                               xpm = (const gchar **) jump_xpm_focused;
-
                        pixbuf = gdk_pixbuf_new_from_xpm_data (xpm);
                }
 
diff --git a/calendar/importers/icalendar-importer.c b/calendar/importers/icalendar-importer.c
index 2368643..83fc952 100644
--- a/calendar/importers/icalendar-importer.c
+++ b/calendar/importers/icalendar-importer.c
@@ -1004,34 +1004,28 @@ gnome_calendar_import (EImport *ei,
        g_free (filename);
 
        /* If we couldn't load the file, just return. FIXME: Error message? */
-       if (!icalcomp)
-               goto out;
-
-       ici = g_malloc0 (sizeof (*ici));
-       ici->ei = ei;
-       ici->target = target;
-       ici->cancellable = g_cancellable_new ();
-       ici->icalcomp = icalcomp;
-       icalcomp = NULL;
-
-       g_datalist_set_data_full (&target->data, "gnomecal-data", ici, free_ici);
-
-       prepare_events (ici->icalcomp, &ici->tasks);
-       if (do_calendar) {
-               open_default_source (ici, E_CAL_CLIENT_SOURCE_TYPE_EVENTS, gc_import_events);
-               return;
-       }
+       if (icalcomp) {
+               ici = g_malloc0 (sizeof (*ici));
+               ici->ei = ei;
+               ici->target = target;
+               ici->cancellable = g_cancellable_new ();
+               ici->icalcomp = icalcomp;
+
+               g_datalist_set_data_full (&target->data, "gnomecal-data", ici, free_ici);
+
+               prepare_events (ici->icalcomp, &ici->tasks);
+               if (do_calendar) {
+                       open_default_source (ici, E_CAL_CLIENT_SOURCE_TYPE_EVENTS, gc_import_events);
+                       return;
+               }
 
-       prepare_tasks (ici->icalcomp, ici->tasks);
-       if (do_tasks) {
-               open_default_source (ici, E_CAL_CLIENT_SOURCE_TYPE_TASKS, gc_import_tasks);
-               return;
+               prepare_tasks (ici->icalcomp, ici->tasks);
+               if (do_tasks) {
+                       open_default_source (ici, E_CAL_CLIENT_SOURCE_TYPE_TASKS, gc_import_tasks);
+                       return;
+               }
        }
 
- out:
-       if (icalcomp)
-               icalcomponent_free (icalcomp);
-
        e_import_complete (ei, target);
 }
 
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index 9b721b0..502f098 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -2142,7 +2142,7 @@ static gboolean
 msg_composer_key_press_event (GtkWidget *widget,
                               GdkEventKey *event)
 {
-       EMsgComposer *composer = E_MSG_COMPOSER (widget);
+       EMsgComposer *composer;
        GtkWidget *input_widget;
        GtkhtmlEditor *editor;
        EWebViewGtkHTML *web_view;
@@ -3140,88 +3140,82 @@ e_msg_composer_new_with_message (EShell *shell,
                        table, identity_uid);
        }
 
-       if (postto == NULL) {
-               auto_cc = g_hash_table_new_full (
-                       (GHashFunc) camel_strcase_hash,
-                       (GEqualFunc) camel_strcase_equal,
-                       (GDestroyNotify) g_free,
-                       (GDestroyNotify) NULL);
-
-               auto_bcc = g_hash_table_new_full (
-                       (GHashFunc) camel_strcase_hash,
-                       (GEqualFunc) camel_strcase_equal,
-                       (GDestroyNotify) g_free,
-                       (GDestroyNotify) NULL);
-
-               if (source != NULL) {
-                       composer_add_auto_recipients (source, "cc", auto_cc);
-                       composer_add_auto_recipients (source, "bcc", auto_bcc);
-               }
+       auto_cc = g_hash_table_new_full (
+               (GHashFunc) camel_strcase_hash,
+               (GEqualFunc) camel_strcase_equal,
+               (GDestroyNotify) g_free,
+               (GDestroyNotify) NULL);
+
+       auto_bcc = g_hash_table_new_full (
+               (GHashFunc) camel_strcase_hash,
+               (GEqualFunc) camel_strcase_equal,
+               (GDestroyNotify) g_free,
+               (GDestroyNotify) NULL);
 
-               to = camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_TO);
-               cc = camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_CC);
-               bcc = camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_BCC);
+       if (source != NULL) {
+               composer_add_auto_recipients (source, "cc", auto_cc);
+               composer_add_auto_recipients (source, "bcc", auto_bcc);
+       }
 
-               len = CAMEL_ADDRESS (to)->addresses->len;
-               for (i = 0; i < len; i++) {
-                       const gchar *name, *addr;
+       to = camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_TO);
+       cc = camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_CC);
+       bcc = camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_BCC);
 
-                       if (camel_internet_address_get (to, i, &name, &addr)) {
-                               EDestination *dest = e_destination_new ();
-                               e_destination_set_name (dest, name);
-                               e_destination_set_email (dest, addr);
-                               To = g_list_append (To, dest);
-                       }
+       len = CAMEL_ADDRESS (to)->addresses->len;
+       for (i = 0; i < len; i++) {
+               const gchar *name, *addr;
+
+               if (camel_internet_address_get (to, i, &name, &addr)) {
+                       EDestination *dest = e_destination_new ();
+                       e_destination_set_name (dest, name);
+                       e_destination_set_email (dest, addr);
+                       To = g_list_append (To, dest);
                }
+       }
 
-               Tov = destination_list_to_vector (To);
-               g_list_free (To);
+       Tov = destination_list_to_vector (To);
+       g_list_free (To);
 
-               len = CAMEL_ADDRESS (cc)->addresses->len;
-               for (i = 0; i < len; i++) {
-                       const gchar *name, *addr;
+       len = CAMEL_ADDRESS (cc)->addresses->len;
+       for (i = 0; i < len; i++) {
+               const gchar *name, *addr;
 
-                       if (camel_internet_address_get (cc, i, &name, &addr)) {
-                               EDestination *dest = e_destination_new ();
-                               e_destination_set_name (dest, name);
-                               e_destination_set_email (dest, addr);
+               if (camel_internet_address_get (cc, i, &name, &addr)) {
+                       EDestination *dest = e_destination_new ();
+                       e_destination_set_name (dest, name);
+                       e_destination_set_email (dest, addr);
 
-                               if (g_hash_table_contains (auto_cc, addr))
-                                       e_destination_set_auto_recipient (dest, TRUE);
+                       if (g_hash_table_contains (auto_cc, addr))
+                               e_destination_set_auto_recipient (dest, TRUE);
 
-                               Cc = g_list_append (Cc, dest);
-                       }
+                       Cc = g_list_append (Cc, dest);
                }
+       }
 
-               Ccv = destination_list_to_vector (Cc);
-               g_hash_table_destroy (auto_cc);
-               g_list_free (Cc);
+       Ccv = destination_list_to_vector (Cc);
+       g_hash_table_destroy (auto_cc);
+       g_list_free (Cc);
 
-               len = CAMEL_ADDRESS (bcc)->addresses->len;
-               for (i = 0; i < len; i++) {
-                       const gchar *name, *addr;
+       len = CAMEL_ADDRESS (bcc)->addresses->len;
+       for (i = 0; i < len; i++) {
+               const gchar *name, *addr;
 
-                       if (camel_internet_address_get (bcc, i, &name, &addr)) {
-                               EDestination *dest = e_destination_new ();
-                               e_destination_set_name (dest, name);
-                               e_destination_set_email (dest, addr);
+               if (camel_internet_address_get (bcc, i, &name, &addr)) {
+                       EDestination *dest = e_destination_new ();
+                       e_destination_set_name (dest, name);
+                       e_destination_set_email (dest, addr);
 
-                               if (g_hash_table_contains (auto_bcc, addr))
-                                       e_destination_set_auto_recipient (dest, TRUE);
+                       if (g_hash_table_contains (auto_bcc, addr))
+                               e_destination_set_auto_recipient (dest, TRUE);
 
-                               Bcc = g_list_append (Bcc, dest);
-                       }
+                       Bcc = g_list_append (Bcc, dest);
                }
-
-               Bccv = destination_list_to_vector (Bcc);
-               g_hash_table_destroy (auto_bcc);
-               g_list_free (Bcc);
-       } else {
-               Tov = NULL;
-               Ccv = NULL;
-               Bccv = NULL;
        }
 
+       Bccv = destination_list_to_vector (Bcc);
+       g_hash_table_destroy (auto_bcc);
+       g_list_free (Bcc);
+
        if (source != NULL)
                g_object_unref (source);
 
diff --git a/e-util/e-attachment-store.c b/e-util/e-attachment-store.c
index 3720baf..c7128ec 100644
--- a/e-util/e-attachment-store.c
+++ b/e-util/e-attachment-store.c
@@ -824,8 +824,10 @@ e_attachment_store_get_uris_finish (EAttachmentStore *store,
        g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), NULL);
 
        simple = G_SIMPLE_ASYNC_RESULT (result);
+       if (g_simple_async_result_propagate_error (simple, error))
+               return NULL;
+
        uris = g_simple_async_result_get_op_res_gpointer (simple);
-       g_simple_async_result_propagate_error (simple, error);
 
        return uris;
 }
@@ -982,8 +984,8 @@ e_attachment_store_load_finish (EAttachmentStore *store,
        g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), FALSE);
 
        simple = G_SIMPLE_ASYNC_RESULT (result);
-       success = g_simple_async_result_get_op_res_gboolean (simple);
-       g_simple_async_result_propagate_error (simple, error);
+       success = !g_simple_async_result_propagate_error (simple, error) &&
+                  g_simple_async_result_get_op_res_gboolean (simple);
 
        return success;
 }
@@ -1332,8 +1334,10 @@ e_attachment_store_save_finish (EAttachmentStore *store,
        g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), NULL);
 
        simple = G_SIMPLE_ASYNC_RESULT (result);
+       if (g_simple_async_result_propagate_error (simple, error))
+               return NULL;
+
        uris = g_simple_async_result_get_op_res_gpointer (simple);
-       g_simple_async_result_propagate_error (simple, error);
 
        return uris;
 }
diff --git a/e-util/e-attachment.c b/e-util/e-attachment.c
index e2b64ab..42d5e93 100644
--- a/e-util/e-attachment.c
+++ b/e-util/e-attachment.c
@@ -2191,6 +2191,11 @@ e_attachment_load_finish (EAttachment *attachment,
        g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), FALSE);
 
        simple = G_SIMPLE_ASYNC_RESULT (result);
+       if (g_simple_async_result_propagate_error (simple, error)) {
+               attachment_set_loading (attachment, FALSE);
+               return FALSE;
+       }
+
        load_context = g_simple_async_result_get_op_res_gpointer (simple);
 
        if (load_context != NULL && load_context->mime_part != NULL) {
@@ -2206,8 +2211,6 @@ e_attachment_load_finish (EAttachment *attachment,
                        attachment, load_context->mime_part);
        }
 
-       g_simple_async_result_propagate_error (simple, error);
-
        attachment_set_loading (attachment, FALSE);
 
        return (load_context != NULL);
@@ -2529,8 +2532,8 @@ e_attachment_open_finish (EAttachment *attachment,
        g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), FALSE);
 
        simple = G_SIMPLE_ASYNC_RESULT (result);
-       success = g_simple_async_result_get_op_res_gboolean (simple);
-       g_simple_async_result_propagate_error (simple, error);
+       success = !g_simple_async_result_propagate_error (simple, error) &&
+                  g_simple_async_result_get_op_res_gboolean (simple);
 
        return success;
 }
@@ -3066,10 +3069,14 @@ e_attachment_save_finish (EAttachment *attachment,
        g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), NULL);
 
        simple = G_SIMPLE_ASYNC_RESULT (result);
+       if (g_simple_async_result_propagate_error (simple, error)) {
+               attachment_set_saving (attachment, FALSE);
+               return NULL;
+       }
+
        destination = g_simple_async_result_get_op_res_gpointer (simple);
        if (destination != NULL)
                g_object_ref (destination);
-       g_simple_async_result_propagate_error (simple, error);
 
        attachment_set_saving (attachment, FALSE);
 
diff --git a/e-util/e-canvas-background.c b/e-util/e-canvas-background.c
index 6379697..0c5c28a 100644
--- a/e-util/e-canvas-background.c
+++ b/e-util/e-canvas-background.c
@@ -121,13 +121,13 @@ ecb_set_property (GObject *object,
 
        switch (property_id) {
        case PROP_FILL_COLOR:
-               if (g_value_get_string (value))
-                       gdk_color_parse (g_value_get_string (value), &color);
-
-               ecb->priv->rgba = ((color.red & 0xff00) << 16 |
-                                  (color.green & 0xff00) << 8 |
-                                  (color.blue & 0xff00) |
-                                  0xff);
+               if (g_value_get_string (value) &&
+                   gdk_color_parse (g_value_get_string (value), &color)) {
+                       ecb->priv->rgba = ((color.red & 0xff00) << 16 |
+                                          (color.green & 0xff00) << 8 |
+                                          (color.blue & 0xff00) |
+                                          0xff);
+               }
                break;
 
        case PROP_FILL_COLOR_GDK:
diff --git a/e-util/e-canvas.c b/e-util/e-canvas.c
index 9330406..2bac10f 100644
--- a/e-util/e-canvas.c
+++ b/e-util/e-canvas.c
@@ -678,14 +678,12 @@ e_canvas_item_grab_focus (GnomeCanvasItem *item,
                gtk_widget_grab_focus (GTK_WIDGET (item->canvas));
        }
 
-       if (item) {
-               ev.focus_change.type = GDK_FOCUS_CHANGE;
-               ev.focus_change.window = bin_window;
-               ev.focus_change.send_event = FALSE;
-               ev.focus_change.in = TRUE;
+       ev.focus_change.type = GDK_FOCUS_CHANGE;
+       ev.focus_change.window = bin_window;
+       ev.focus_change.send_event = FALSE;
+       ev.focus_change.in = TRUE;
 
-               canvas_emit_event (item->canvas, &ev);
-       }
+       canvas_emit_event (item->canvas, &ev);
 }
 
 static void
diff --git a/e-util/e-cell-text.c b/e-util/e-cell-text.c
index 6026185..d7e38eb 100644
--- a/e-util/e-cell-text.c
+++ b/e-util/e-cell-text.c
@@ -467,7 +467,7 @@ layout_with_preedit (ECellTextView *text_view,
                edit->im_context,
                &preedit_string,&preedit_attrs,
                NULL);
-       preedit_length = edit->preedit_length = strlen (preedit_string);;
+       preedit_length = edit->preedit_length = preedit_string ? strlen (preedit_string) : 0;
 
        layout = edit->layout;
 
@@ -2237,12 +2237,10 @@ _get_position (ECellTextView *text_view,
        case E_TEP_BACKWARD_PAGE:
                return edit->selection_end;
        default:
-               return edit->selection_end;
+               break;
        }
 
-       g_return_val_if_reached (0);
-
-       return 0; /* Kill warning */
+       return edit->selection_end;
 }
 
 static void
diff --git a/e-util/e-filter-color.c b/e-util/e-filter-color.c
index 213530f..63c27b7 100644
--- a/e-util/e-filter-color.c
+++ b/e-util/e-filter-color.c
@@ -84,7 +84,8 @@ filter_color_xml_decode (EFilterElement *element,
 
        prop = xmlGetProp (node, (xmlChar *)"spec");
        if (prop != NULL) {
-               gdk_color_parse ((gchar *) prop, &fc->color);
+               if (!gdk_color_parse ((gchar *) prop, &fc->color))
+                       g_warning ("%s: Failed to parse color from string '%s'", G_STRFUNC, prop);
                xmlFree (prop);
        } else {
                /* try reading the old RGB properties */
diff --git a/e-util/e-filter-rule.c b/e-util/e-filter-rule.c
index 8dc9a17..842cf63 100644
--- a/e-util/e-filter-rule.c
+++ b/e-util/e-filter-rule.c
@@ -100,7 +100,11 @@ part_combobox_changed (GtkComboBox *combobox,
                /* traverse until reached index */
        }
 
-       g_return_if_fail (part != NULL);
+       if (!part) {
+               g_warn_if_reached ();
+               return;
+       }
+
        g_return_if_fail (i == index);
 
        /* dont update if we haven't changed */
diff --git a/e-util/e-misc-utils.c b/e-util/e-misc-utils.c
index 1ae9301..1e9cd1d 100644
--- a/e-util/e-misc-utils.c
+++ b/e-util/e-misc-utils.c
@@ -1232,6 +1232,7 @@ e_format_number (gint number)
                default:
                        last_count = *grouping;
                        grouping++;
+                       /* coverity[fallthrough] */
                case 0:
                        divider = epow10 (last_count);
                        if (number >= divider) {
diff --git a/e-util/e-name-selector-list.c b/e-util/e-name-selector-list.c
index 52516a5..8e51e41 100644
--- a/e-util/e-name-selector-list.c
+++ b/e-util/e-name-selector-list.c
@@ -465,8 +465,9 @@ enl_tree_button_press_event (GtkWidget *widget,
        if (!gtk_widget_has_grab (GTK_WIDGET (list->priv->popup)))
                enl_popup_grab (list, (GdkEvent *) event);
 
-       gtk_tree_view_get_dest_row_at_pos (
-               tree_view, event->x, event->y, &path, NULL);
+       if (!gtk_tree_view_get_dest_row_at_pos (
+               tree_view, event->x, event->y, &path, NULL))
+               return FALSE;
        selection = gtk_tree_view_get_selection (tree_view);
        if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (store), &iter, path))
                return FALSE;
diff --git a/e-util/e-send-options.c b/e-util/e-send-options.c
index f586f36..c105571 100644
--- a/e-util/e-send-options.c
+++ b/e-util/e-send-options.c
@@ -573,6 +573,7 @@ setup_widgets (ESendOptionsDialog *sod,
                        priv->help_section = g_strdup ("groupwise-placeholder");
                        gtk_widget_hide (priv->completed_label);
                        gtk_widget_hide (priv->when_completed);
+                       break;
                case E_ITEM_TASK:
                        priv->help_section = g_strdup ("groupwise-placeholder");
                        gtk_widget_hide (priv->security_label);
@@ -636,6 +637,7 @@ e_send_options_cb (GtkDialog *dialog,
        switch (state) {
                case GTK_RESPONSE_OK:
                        e_send_options_get_widgets_data (sod);
+                       /* coverity[fallthrough] */
                case GTK_RESPONSE_CANCEL:
                        gtk_widget_hide (priv->main);
                        gtk_widget_destroy (priv->main);
diff --git a/e-util/e-stock-request.c b/e-util/e-stock-request.c
index 0ce7d8c..b8cb21b 100644
--- a/e-util/e-stock-request.c
+++ b/e-util/e-stock-request.c
@@ -107,8 +107,11 @@ handle_stock_request_idle_cb (gpointer user_data)
 
                filename = gtk_icon_info_get_filename (icon_info);
                if (filename != NULL) {
-                       g_file_get_contents (
-                               filename, &buffer, &buff_len, &local_error);
+                       if (!g_file_get_contents (
+                               filename, &buffer, &buff_len, &local_error)) {
+                               buffer = NULL;
+                               buff_len = 0;
+                       }
                        priv->content_type =
                                g_content_type_guess (filename, NULL, 0, NULL);
 
diff --git a/e-util/e-table-click-to-add.c b/e-util/e-table-click-to-add.c
index d5202f7..c9abf03 100644
--- a/e-util/e-table-click-to-add.c
+++ b/e-util/e-table-click-to-add.c
@@ -437,6 +437,7 @@ etcta_event (GnomeCanvasItem *item,
        case GDK_FOCUS_CHANGE:
                if (!e->focus_change.in)
                        return TRUE;
+               /* coverity[fallthrough] */
 
        case GDK_BUTTON_PRESS:
                if (etcta->text) {
diff --git a/e-util/e-table-config.c b/e-util/e-table-config.c
index 5fbb6b0..8c5fecd 100644
--- a/e-util/e-table-config.c
+++ b/e-util/e-table-config.c
@@ -231,7 +231,7 @@ static ETableColumnSpecification *
 find_column_spec_by_name (ETableSpecification *spec,
                           const gchar *s)
 {
-       ETableColumnSpecification *column;
+       ETableColumnSpecification *column = NULL;
        GPtrArray *array;
        guint ii;
 
diff --git a/e-util/e-table-group-container.c b/e-util/e-table-group-container.c
index d828dde..426c544 100644
--- a/e-util/e-table-group-container.c
+++ b/e-util/e-table-group-container.c
@@ -1453,7 +1453,7 @@ e_table_group_container_print_page (EPrintable *ep,
                        break;
                }
 
-               child = child->next;
+               child = child ? child->next : NULL;
                if (!child) {
                        child_printable = NULL;
                        break;
diff --git a/e-util/e-table-header-item.c b/e-util/e-table-header-item.c
index 06d0030..556c8a2 100644
--- a/e-util/e-table-header-item.c
+++ b/e-util/e-table-header-item.c
@@ -1222,7 +1222,7 @@ static void
 ethi_start_drag (ETableHeaderItem *ethi,
                  GdkEvent *event)
 {
-       GtkWidget *widget = GTK_WIDGET (GNOME_CANVAS_ITEM (ethi)->canvas);
+       GtkWidget *widget;
        GtkTargetList *list;
        GdkDragContext *context;
        ETableCol *ecol;
diff --git a/e-util/e-table-header-utils.c b/e-util/e-table-header-utils.c
index 66efb01..5baf7f1 100644
--- a/e-util/e-table-header-utils.c
+++ b/e-util/e-table-header-utils.c
@@ -272,6 +272,7 @@ e_table_header_draw_button (cairo_t *cr,
                break;
        }
 
+       /* coverity[dead_error_begin] */
        default:
                cairo_restore (cr);
                g_return_if_reached ();
diff --git a/e-util/e-table-item.c b/e-util/e-table-item.c
index 3f88d8c..1a1956f 100644
--- a/e-util/e-table-item.c
+++ b/e-util/e-table-item.c
@@ -3076,9 +3076,12 @@ eti_event (GnomeCanvasItem *item,
                                e_table_item_leave_edit_(eti);
                        }
                }
+               return_val = FALSE;
+               break;
 
        default:
                return_val = FALSE;
+               break;
        }
        /* d(g_print("%s: returning: %s\n", __FUNCTION__, return_val?"true":"false"));*/
 
@@ -3601,9 +3604,11 @@ e_table_item_enter_edit (ETableItem *eti,
        eti->editing_col = col;
        eti->editing_row = row;
 
-       eti->edit_ctx = e_cell_enter_edit (eti->cell_views[col], view_to_model_col (eti, col), col, row);
+       if (col >= 0) {
+               eti->edit_ctx = e_cell_enter_edit (eti->cell_views[col], view_to_model_col (eti, col), col, 
row);
 
-       g_object_notify (G_OBJECT (eti), "is-editing");
+               g_object_notify (G_OBJECT (eti), "is-editing");
+       }
 }
 
 /**
diff --git a/e-util/e-text.c b/e-util/e-text.c
index d13b4a6..3fda172 100644
--- a/e-util/e-text.c
+++ b/e-util/e-text.c
@@ -726,8 +726,11 @@ e_text_set_property (GObject *object,
                break;
 
        case PROP_FILL_COLOR:
-               if (g_value_get_string (value))
-                       gdk_color_parse (g_value_get_string (value), &color);
+               if (g_value_get_string (value) &&
+                   !gdk_color_parse (g_value_get_string (value), &color)) {
+                       g_warning ("%s: Failed to parse color '%s'", G_STRFUNC, g_value_get_string (value));
+                       break;
+               }
 
                text->rgba = ((color.red & 0xff00) << 16 |
                              (color.green & 0xff00) << 8 |
@@ -1275,7 +1278,7 @@ e_text_draw (GnomeCanvasItem *item,
 
        if (text->editing) {
                if (text->selection_start != text->selection_end) {
-                       cairo_region_t *clip_region = cairo_region_create ();
+                       cairo_region_t *clip_region;
                        gint indices[2];
                        GtkStateType state;
 
diff --git a/e-util/gal-a11y-e-cell-tree.c b/e-util/gal-a11y-e-cell-tree.c
index e0757f5..07d6ac3 100644
--- a/e-util/gal-a11y-e-cell-tree.c
+++ b/e-util/gal-a11y-e-cell-tree.c
@@ -191,15 +191,14 @@ gal_a11y_e_cell_tree_new (ETableItem *item,
 {
        AtkObject *subcell_a11y;
        GalA11yECellTree *a11y;
-
        ETreePath node;
        ETreeModel *tree_model;
        ETreeTableAdapter *tree_table_adapter;
-
        ECellView *subcell_view;
+
        subcell_view = e_cell_tree_view_get_subcell_view (cell_view);
 
-       if (subcell_view->ecell) {
+       if (subcell_view && subcell_view->ecell) {
                subcell_a11y = gal_a11y_e_cell_registry_get_object (
                        NULL,
                        item,
@@ -233,8 +232,7 @@ gal_a11y_e_cell_tree_new (ETableItem *item,
                        if (e_tree_table_adapter_node_is_expanded (tree_table_adapter, node))
                                gal_a11y_e_cell_add_state (GAL_A11Y_E_CELL (subcell_a11y), 
ATK_STATE_EXPANDED, FALSE);
                }
-       }
-       else
+       } else
                subcell_a11y = NULL;
 
        /* create a companion a11y object, this object has type GalA11yECellTree
diff --git a/e-util/gal-a11y-e-cell.c b/e-util/gal-a11y-e-cell.c
index 9f16b34..b05f38d 100644
--- a/e-util/gal-a11y-e-cell.c
+++ b/e-util/gal-a11y-e-cell.c
@@ -359,7 +359,10 @@ gal_a11y_e_cell_remove_action_by_name (GalA11yECell *cell,
                }
        }
 
-       g_return_val_if_fail (list_node != NULL, FALSE);
+       if (!list_node) {
+               g_warn_if_reached ();
+               return FALSE;
+       }
 
        _gal_a11y_e_cell_destroy_action_info (list_node->data, NULL);
        cell->action_list = g_list_remove_link (cell->action_list, list_node);
diff --git a/e-util/gal-a11y-e-table-item.c b/e-util/gal-a11y-e-table-item.c
index 51bce17..c3bbded 100644
--- a/e-util/gal-a11y-e-table-item.c
+++ b/e-util/gal-a11y-e-table-item.c
@@ -1141,41 +1141,38 @@ gal_a11y_e_table_item_new (ETableItem *item)
        if (GET_PRIVATE (a11y)->columns == NULL)
                return NULL;
 
-       if (item) {
-               g_signal_connect (
-                       item, "selection_model_removed",
-                       G_CALLBACK (eti_a11y_selection_model_removed_cb), NULL);
+       g_signal_connect (
+               item, "selection_model_removed",
+               G_CALLBACK (eti_a11y_selection_model_removed_cb), NULL);
+       g_signal_connect (
+               item, "selection_model_added",
+               G_CALLBACK (eti_a11y_selection_model_added_cb), NULL);
+       if (item->selection)
+               gal_a11y_e_table_item_ref_selection (
+                       a11y,
+                       item->selection);
+
+       /* find the TableItem's parent: table or tree */
+       GET_PRIVATE (a11y)->widget = gtk_widget_get_parent (
+               GTK_WIDGET (item->parent.canvas));
+       parent = gtk_widget_get_accessible (GET_PRIVATE (a11y)->widget);
+       name = atk_object_get_name (parent);
+       if (name)
+               atk_object_set_name (accessible, name);
+       atk_object_set_parent (accessible, parent);
+
+       if (E_IS_TREE (GET_PRIVATE (a11y)->widget)) {
+               ETreeModel *model;
+               model = e_tree_get_model (E_TREE (GET_PRIVATE (a11y)->widget));
                g_signal_connect (
-                       item, "selection_model_added",
-                       G_CALLBACK (eti_a11y_selection_model_added_cb), NULL);
-               if (item->selection)
-                       gal_a11y_e_table_item_ref_selection (
-                               a11y,
-                               item->selection);
-
-               /* find the TableItem's parent: table or tree */
-               GET_PRIVATE (a11y)->widget = gtk_widget_get_parent (
-                       GTK_WIDGET (item->parent.canvas));
-               parent = gtk_widget_get_accessible (GET_PRIVATE (a11y)->widget);
-               name = atk_object_get_name (parent);
-               if (name)
-                       atk_object_set_name (accessible, name);
-               atk_object_set_parent (accessible, parent);
-
-               if (E_IS_TREE (GET_PRIVATE (a11y)->widget)) {
-                       ETreeModel *model;
-                       model = e_tree_get_model (E_TREE (GET_PRIVATE (a11y)->widget));
-                       g_signal_connect (
-                               model, "node_changed",
-                               G_CALLBACK (eti_tree_model_node_changed_cb), item);
-                       accessible->role = ATK_ROLE_TREE_TABLE;
-               } else if (E_IS_TABLE (GET_PRIVATE (a11y)->widget)) {
-                       accessible->role = ATK_ROLE_TABLE;
-               }
+                       model, "node_changed",
+                       G_CALLBACK (eti_tree_model_node_changed_cb), item);
+               accessible->role = ATK_ROLE_TREE_TABLE;
+       } else if (E_IS_TABLE (GET_PRIVATE (a11y)->widget)) {
+               accessible->role = ATK_ROLE_TABLE;
        }
 
-       if (item)
-               g_object_weak_ref (G_OBJECT (item), item_finalized, g_object_ref (a11y));
+       g_object_weak_ref (G_OBJECT (item), item_finalized, g_object_ref (a11y));
 
        esm = item->selection;
 
diff --git a/e-util/test-calendar.c b/e-util/test-calendar.c
index 9d36e90..790b710 100644
--- a/e-util/test-calendar.c
+++ b/e-util/test-calendar.c
@@ -108,10 +108,13 @@ on_date_range_changed (ECalendarItem *calitem)
        gint start_year, start_month, start_day;
        gint end_year, end_month, end_day;
 
-       e_calendar_item_get_date_range (
+       if (!e_calendar_item_get_date_range (
                calitem,
                &start_year, &start_month, &start_day,
-               &end_year, &end_month, &end_day);
+               &end_year, &end_month, &end_day)) {
+               g_warning ("%s: Failed to get date range", G_STRFUNC);
+               return;
+       }
 
        g_print (
                "Date range changed (D/M/Y): %i/%i/%i - %i/%i/%i\n",
diff --git a/em-format/e-mail-formatter-headers.c b/em-format/e-mail-formatter-headers.c
index 9d7a512..28d2322 100644
--- a/em-format/e-mail-formatter-headers.c
+++ b/em-format/e-mail-formatter-headers.c
@@ -58,8 +58,6 @@ format_short_headers (EMailFormatter *formatter,
 {
        CamelMimePart *mime_part;
        GtkTextDirection direction;
-       const gchar *charset;
-       CamelContentType *ct;
        gchar *hdr_charset;
        gchar *evolution_imagesdir;
        gchar *subject = NULL;
@@ -73,9 +71,6 @@ format_short_headers (EMailFormatter *formatter,
        mime_part = e_mail_part_ref_mime_part (part);
        direction = gtk_widget_get_default_direction ();
 
-       ct = camel_mime_part_get_content_type (mime_part);
-       charset = camel_content_type_param (ct, "charset");
-       charset = camel_iconv_charset_name (charset);
        hdr_charset = e_mail_formatter_dup_charset (formatter);
        if (!hdr_charset)
                hdr_charset = e_mail_formatter_dup_default_charset (formatter);
diff --git a/em-format/e-mail-formatter-quote-attachment.c b/em-format/e-mail-formatter-quote-attachment.c
index 1a6b194..81a2a15 100644
--- a/em-format/e-mail-formatter-quote-attachment.c
+++ b/em-format/e-mail-formatter-quote-attachment.c
@@ -63,7 +63,7 @@ emfqe_attachment_format (EMailFormatterExtension *extension,
 
        empa = E_MAIL_PART_ATTACHMENT (part);
 
-       if (!empa->attachment_view_part_id)
+       if (!empa || !empa->attachment_view_part_id)
                return FALSE;
 
        attachment_view_part = e_mail_part_list_ref_part (
@@ -78,7 +78,8 @@ emfqe_attachment_format (EMailFormatterExtension *extension,
        mime_part = e_mail_part_ref_mime_part (part);
        text = e_mail_part_describe (
                mime_part,
-               empa ? empa->snoop_mime_type :
+               empa->snoop_mime_type && *empa->snoop_mime_type ?
+               empa->snoop_mime_type :
                e_mail_part_get_mime_type (part));
        g_object_unref (mime_part);
 
diff --git a/em-format/e-mail-formatter-text-html.c b/em-format/e-mail-formatter-text-html.c
index 17632fa..1065474 100644
--- a/em-format/e-mail-formatter-text-html.c
+++ b/em-format/e-mail-formatter-text-html.c
@@ -191,12 +191,10 @@ emfe_text_html_format (EMailFormatterExtension *extension,
                        closing = g_utf8_strchr (pos, -1, '>');
 
                        /* Find where the actual tag name begins */
-                       tag = g_utf8_find_next_char (pos, NULL);
-                       while ((tag = g_utf8_find_next_char (pos, NULL)) != NULL) {
+                       while (tag = g_utf8_find_next_char (pos, NULL), tag != NULL) {
                                gunichar c = g_utf8_get_char (tag);
                                if (!g_unichar_isspace (c))
                                        break;
-
                        }
 
                        if (g_ascii_strncasecmp (tag, "style", 5) == 0) {
diff --git a/libemail-engine/e-mail-session.c b/libemail-engine/e-mail-session.c
index 38eae77..23ed2ce 100644
--- a/libemail-engine/e-mail-session.c
+++ b/libemail-engine/e-mail-session.c
@@ -190,7 +190,7 @@ user_message_response_cb (GObject *source,
        }
 
        /* waiting for a response? */
-       if (m && m->button_captions)
+       if (m->button_captions)
                e_flag_set (m->done);
 
        /* check for pendings */
diff --git a/libemail-engine/e-mail-utils.c b/libemail-engine/e-mail-utils.c
index d4bb9b5..9610da7 100644
--- a/libemail-engine/e-mail-utils.c
+++ b/libemail-engine/e-mail-utils.c
@@ -86,8 +86,6 @@ em_utils_folder_is_drafts (ESourceRegistry *registry,
 
        folder_uri = e_mail_folder_uri_from_folder (folder);
 
-       store = camel_folder_get_parent_store (folder);
-
        extension_name = E_SOURCE_EXTENSION_MAIL_COMPOSITION;
        list = e_source_registry_list_sources (registry, extension_name);
 
@@ -157,8 +155,6 @@ em_utils_folder_is_templates (ESourceRegistry *registry,
 
        folder_uri = e_mail_folder_uri_from_folder (folder);
 
-       store = camel_folder_get_parent_store (folder);
-
        extension_name = E_SOURCE_EXTENSION_MAIL_COMPOSITION;
        list = e_source_registry_list_sources (registry, extension_name);
 
@@ -227,8 +223,6 @@ em_utils_folder_is_sent (ESourceRegistry *registry,
 
        folder_uri = e_mail_folder_uri_from_folder (folder);
 
-       store = camel_folder_get_parent_store (folder);
-
        extension_name = E_SOURCE_EXTENSION_MAIL_SUBMISSION;
        list = e_source_registry_list_sources (registry, extension_name);
 
diff --git a/libemail-engine/mail-folder-cache.c b/libemail-engine/mail-folder-cache.c
index e54cdbb..672447c 100644
--- a/libemail-engine/mail-folder-cache.c
+++ b/libemail-engine/mail-folder-cache.c
@@ -32,6 +32,7 @@
 #include <config.h>
 #endif
 
+#include <errno.h>
 #include <string.h>
 #include <time.h>
 
@@ -1152,12 +1153,18 @@ rename_folders (MailFolderCache *cache,
        e_filename_make_safe (newuri);
        oldfile = g_strdup_printf ("%s/custom_view-%s.xml", config_dir, olduri);
        newfile = g_strdup_printf ("%s/custom_view-%s.xml", config_dir, newuri);
-       g_rename (oldfile, newfile);
+       if (g_rename (oldfile, newfile) == -1) {
+               g_warning ("%s: Failed to rename '%s' to '%s': %s", G_STRFUNC,
+                          oldfile, newfile, g_strerror (errno));
+       }
        g_free (oldfile);
        g_free (newfile);
        oldfile = g_strdup_printf ("%s/current_view-%s.xml", config_dir, olduri);
        newfile = g_strdup_printf ("%s/current_view-%s.xml", config_dir, newuri);
-       g_rename (oldfile, newfile);
+       if (g_rename (oldfile, newfile) == -1) {
+               g_warning ("%s: Failed to rename '%s' to '%s': %s", G_STRFUNC,
+                          oldfile, newfile, g_strerror (errno));
+       }
        g_free (oldfile);
        g_free (newfile);
        g_free (olduri);
diff --git a/libemail-engine/mail-mt.c b/libemail-engine/mail-mt.c
index 19ed41b..96f8e72 100644
--- a/libemail-engine/mail-mt.c
+++ b/libemail-engine/mail-mt.c
@@ -655,6 +655,8 @@ mail_call_main (mail_call_t type,
        ret = m->ret;
        mail_msg_unref (m);
 
+       /* the m->ap is freed on the message end, at do_free() above */
+       /* coverity[missing_va_end] */
        return ret;
 }
 
diff --git a/libgnomecanvas/gnome-canvas-text.c b/libgnomecanvas/gnome-canvas-text.c
index 89d8078..eddc87e 100644
--- a/libgnomecanvas/gnome-canvas-text.c
+++ b/libgnomecanvas/gnome-canvas-text.c
@@ -935,12 +935,15 @@ gnome_canvas_text_set_property (GObject *object,
                color_name = g_value_get_string (value);
                if (color_name) {
                        GdkColor color;
-                       gdk_color_parse (color_name, &color);
-
-                       text->rgba = ((color.red & 0xff00) << 16 |
-                                     (color.green & 0xff00) << 8 |
-                                     (color.blue & 0xff00) |
-                                     0xff);
+                       if (gdk_color_parse (color_name, &color)) {
+                               text->rgba = ((color.red & 0xff00) << 16 |
+                                             (color.green & 0xff00) << 8 |
+                                             (color.blue & 0xff00) |
+                                             0xff);
+                       } else {
+                               g_warning ("%s: Failed to parse color form string '%s'",
+                                       G_STRFUNC, color_name);
+                       }
                }
                break;
        }
diff --git a/mail/e-http-request.c b/mail/e-http-request.c
index 5a2601c..c12fd76 100644
--- a/mail/e-http-request.c
+++ b/mail/e-http-request.c
@@ -197,12 +197,12 @@ handle_http_request (GSimpleAsyncResult *res,
        evo_uri = soup_uri_to_string (soup_uri, FALSE);
 
        if (camel_debug_start ("emformat:requests")) {
-               printf ("%s: looking for '%s'\n", G_STRFUNC, evo_uri);
+               printf ("%s: looking for '%s'\n", G_STRFUNC, evo_uri ? evo_uri : "[null]");
                camel_debug_end ();
        }
 
        /* Remove the "evo-" prefix from scheme */
-       uri_len = strlen (evo_uri);
+       uri_len = evo_uri ? strlen (evo_uri) : 0;
        uri = NULL;
        if (evo_uri && (uri_len > 5)) {
 
diff --git a/mail/e-mail-backend.c b/mail/e-mail-backend.c
index bc30ad1..54e2ccb 100644
--- a/mail/e-mail-backend.c
+++ b/mail/e-mail-backend.c
@@ -28,6 +28,7 @@
 
 #include "e-mail-backend.h"
 
+#include <errno.h>
 #include <string.h>
 #include <glib/gstdio.h>
 #include <glib/gi18n-lib.h>
@@ -638,7 +639,10 @@ mail_backend_folder_renamed_cb (MailFolderCache *folder_cache,
                newname = mail_backend_uri_to_evname (new_uri, cachenames[ii]);
 
                /* Ignore errors; doesn't matter. */
-               g_rename (oldname, newname);
+               if (g_rename (oldname, newname) == -1) {
+                       g_warning ("%s: Failed to rename '%s' to '%s': %s", G_STRFUNC,
+                                  oldname, newname, g_strerror (errno));
+               }
 
                g_free (oldname);
                g_free (newname);
diff --git a/mail/e-mail-config-page.c b/mail/e-mail-config-page.c
index 54c71b1..36f8c08 100644
--- a/mail/e-mail-config-page.c
+++ b/mail/e-mail-config-page.c
@@ -191,6 +191,7 @@ e_mail_config_page_compare (GtkWidget *page_a,
        if (interface_a == NULL && interface_b != NULL)
                return 1;
 
+       /* coverity[var_deref_op] */
        if (interface_a->sort_order < interface_b->sort_order)
                return -1;
 
diff --git a/mail/e-mail-migrate.c b/mail/e-mail-migrate.c
index e982b40..6a97b73 100644
--- a/mail/e-mail-migrate.c
+++ b/mail/e-mail-migrate.c
@@ -149,7 +149,9 @@ cp (const gchar *src,
        ut.actime = st.st_atime;
        ut.modtime = st.st_mtime;
        utime (dest, &ut);
-       chmod (dest, st.st_mode);
+       if (chmod (dest, st.st_mode) == -1) {
+               g_warning ("%s: Failed to chmod '%s': %s", G_STRFUNC, dest, g_strerror (errno));
+       }
 
        return TRUE;
 
@@ -264,7 +266,10 @@ em_rename_view_in_folder (gpointer data,
                oldname = g_build_filename (views_dir, filename, NULL);
                newname = g_build_filename (views_dir, newfile, NULL);
 
-               g_rename (oldname, newname);
+               if (g_rename (oldname, newname) == -1) {
+                       g_warning ("%s: Failed to rename '%s' to '%s': %s", G_STRFUNC,
+                                  oldname, newname, g_strerror (errno));
+               }
 
                g_checksum_free (checksum);
                g_free (oldname);
diff --git a/mail/e-mail-reader-utils.c b/mail/e-mail-reader-utils.c
index 78f442d..99a86a1 100644
--- a/mail/e-mail-reader-utils.c
+++ b/mail/e-mail-reader-utils.c
@@ -553,6 +553,9 @@ mail_reader_refresh_folder_cb (GObject *source_object,
        GError *local_error = NULL;
 
        folder = CAMEL_FOLDER (source_object);
+       if (!camel_folder_refresh_info_finish (folder, result, &local_error) && !local_error)
+               local_error = g_error_new_literal (CAMEL_ERROR, CAMEL_ERROR_GENERIC, _("Unknown error"));
+
        async_context = (AsyncContext *) user_data;
 
        activity = async_context->activity;
diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c
index 9fbed51..63ab511 100644
--- a/mail/e-mail-reader.c
+++ b/mail/e-mail-reader.c
@@ -2943,7 +2943,6 @@ mail_reader_set_folder (EMailReader *reader,
 
        priv = E_MAIL_READER_GET_PRIVATE (reader);
 
-       backend = e_mail_reader_get_backend (reader);
        display = e_mail_reader_get_mail_display (reader);
        message_list = e_mail_reader_get_message_list (reader);
 
diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c
index 62405fd..1b60890 100644
--- a/mail/em-composer-utils.c
+++ b/mail/em-composer-utils.c
@@ -468,9 +468,10 @@ composer_presend_check_unwanted_html (EMsgComposer *composer,
                gboolean html_problem = FALSE;
 
                for (ii = 0; recipients[ii] != NULL; ii++) {
-                       if (!e_destination_get_html_mail_pref (recipients[ii]))
+                       if (!e_destination_get_html_mail_pref (recipients[ii])) {
                                html_problem = TRUE;
                                break;
+                       }
                }
 
                if (html_problem) {
@@ -2882,14 +2883,13 @@ em_utils_construct_composer_text (CamelSession *session,
                                   EMailPartList *parts_list)
 {
        gchar *text, *credits;
-       gboolean start_bottom = 0;
 
        g_return_val_if_fail (CAMEL_IS_SESSION (session), NULL);
 
        credits = attribution_format (message);
        text = em_utils_message_to_html (
                session, message, credits, E_MAIL_FORMATTER_QUOTE_FLAG_CITE,
-               parts_list, start_bottom ? "<BR>" : NULL, NULL);
+               parts_list, NULL, NULL);
        g_free (credits);
 
        return text;
diff --git a/mail/em-filter-rule.c b/mail/em-filter-rule.c
index 595bef8..8bd1f6d 100644
--- a/mail/em-filter-rule.c
+++ b/mail/em-filter-rule.c
@@ -310,7 +310,10 @@ part_combobox_changed (GtkComboBox *combobox,
                /* traverse until reached index */
        }
 
-       g_return_if_fail (part != NULL);
+       if (!part) {
+               g_warn_if_reached ();
+               return;
+       }
        g_return_if_fail (i == index);
 
        /* dont update if we haven't changed */
diff --git a/mail/em-folder-properties.c b/mail/em-folder-properties.c
index d0ec478..e7342b7 100644
--- a/mail/em-folder-properties.c
+++ b/mail/em-folder-properties.c
@@ -148,6 +148,18 @@ emfp_get_folder_item (EConfig *ec,
        guint ii, n_properties;
        gint row = 0;
        gboolean can_apply_filters = FALSE;
+       CamelStore *store;
+       CamelSession *session;
+       CamelFolderInfoFlags fi_flags = 0;
+       const gchar *folder_name;
+       MailFolderCache *folder_cache;
+       gboolean have_flags;
+       ESourceRegistry *registry;
+       EShell *shell;
+       EMailBackend *mail_backend;
+       EMailSendAccountOverride *account_override;
+       gchar *folder_uri, *account_uid;
+       GtkWidget *label;
 
        if (old)
                return old;
@@ -210,32 +222,23 @@ emfp_get_folder_item (EConfig *ec,
                }
        }
 
-       if (context->folder != NULL) {
-               CamelStore *store;
-               CamelSession *session;
-               CamelFolderInfoFlags fi_flags = 0;
-               const gchar *folder_name;
-               MailFolderCache *folder_cache;
-               gboolean have_flags;
-
-               store = camel_folder_get_parent_store (context->folder);
-               folder_name = camel_folder_get_full_name (context->folder);
+       store = camel_folder_get_parent_store (context->folder);
+       folder_name = camel_folder_get_full_name (context->folder);
 
-               session = camel_service_ref_session (CAMEL_SERVICE (store));
+       session = camel_service_ref_session (CAMEL_SERVICE (store));
 
-               folder_cache = e_mail_session_get_folder_cache (
-                       E_MAIL_SESSION (session));
+       folder_cache = e_mail_session_get_folder_cache (
+               E_MAIL_SESSION (session));
 
-               have_flags = mail_folder_cache_get_folder_info_flags (
-                       folder_cache, store, folder_name, &fi_flags);
+       have_flags = mail_folder_cache_get_folder_info_flags (
+               folder_cache, store, folder_name, &fi_flags);
 
-               can_apply_filters =
-                       !CAMEL_IS_VEE_FOLDER (context->folder) &&
-                       have_flags &&
-                       (fi_flags & CAMEL_FOLDER_TYPE_MASK) != CAMEL_FOLDER_TYPE_INBOX;
+       can_apply_filters =
+               !CAMEL_IS_VEE_FOLDER (context->folder) &&
+               have_flags &&
+               (fi_flags & CAMEL_FOLDER_TYPE_MASK) != CAMEL_FOLDER_TYPE_INBOX;
 
-               g_object_unref (session);
-       }
+       g_object_unref (session);
 
        class = G_OBJECT_GET_CLASS (context->folder);
        properties = g_object_class_list_properties (class, &n_properties);
@@ -277,56 +280,47 @@ emfp_get_folder_item (EConfig *ec,
        g_free (properties);
 
        /* add send-account-override setting widgets */
-       if (context->folder != NULL) {
-               ESourceRegistry *registry;
-               EShell *shell;
-               EMailBackend *mail_backend;
-               EMailSendAccountOverride *account_override;
-               gchar *folder_uri, *account_uid;
-               GtkWidget *label;
-
-               registry = e_shell_get_registry (e_shell_get_default ());
-
-               label = gtk_label_new_with_mnemonic (_("_Send Account Override:"));
-               gtk_widget_set_halign (label, GTK_ALIGN_START);
-               gtk_widget_show (label);
-               gtk_table_attach (
-                       GTK_TABLE (table), label,
-                       0, 2, row, row + 1,
-                       GTK_FILL, 0, 0, 0);
-               row++;
-
-               widget = g_object_new (
-                       E_TYPE_MAIL_IDENTITY_COMBO_BOX,
-                       "registry", registry,
-                       "allow-none", TRUE,
-                       NULL);
-               gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget);
-               gtk_widget_set_margin_left (widget, 12);
-               gtk_widget_show (widget);
-               gtk_table_attach (
-                       GTK_TABLE (table), widget,
-                       0, 2, row, row + 1,
-                       GTK_FILL | GTK_EXPAND, 0, 0, 0);
-               row++;
-
-               shell = e_shell_get_default ();
-               mail_backend = E_MAIL_BACKEND (e_shell_get_backend_by_name (shell, "mail"));
-               g_return_val_if_fail (mail_backend != NULL, table);
-
-               account_override = e_mail_backend_get_send_account_override (mail_backend);
-               folder_uri = e_mail_folder_uri_from_folder (context->folder);
-               account_uid = e_mail_send_account_override_get_for_folder (account_override, folder_uri);
-
-               gtk_combo_box_set_active_id (GTK_COMBO_BOX (widget), account_uid ? account_uid : "");
-               g_object_set_data_full (G_OBJECT (widget), "sao-folder-uri", folder_uri, g_free);
-
-               g_signal_connect (
-                       widget, "changed",
-                       G_CALLBACK (mail_identity_combo_box_changed_cb), account_override);
-
-               g_free (account_uid);
-       }
+       registry = e_shell_get_registry (e_shell_get_default ());
+
+       label = gtk_label_new_with_mnemonic (_("_Send Account Override:"));
+       gtk_widget_set_halign (label, GTK_ALIGN_START);
+       gtk_widget_show (label);
+       gtk_table_attach (
+               GTK_TABLE (table), label,
+               0, 2, row, row + 1,
+               GTK_FILL, 0, 0, 0);
+       row++;
+
+       widget = g_object_new (
+               E_TYPE_MAIL_IDENTITY_COMBO_BOX,
+               "registry", registry,
+               "allow-none", TRUE,
+               NULL);
+       gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget);
+       gtk_widget_set_margin_left (widget, 12);
+       gtk_widget_show (widget);
+       gtk_table_attach (
+               GTK_TABLE (table), widget,
+               0, 2, row, row + 1,
+               GTK_FILL | GTK_EXPAND, 0, 0, 0);
+       row++;
+
+       shell = e_shell_get_default ();
+       mail_backend = E_MAIL_BACKEND (e_shell_get_backend_by_name (shell, "mail"));
+       g_return_val_if_fail (mail_backend != NULL, table);
+
+       account_override = e_mail_backend_get_send_account_override (mail_backend);
+       folder_uri = e_mail_folder_uri_from_folder (context->folder);
+       account_uid = e_mail_send_account_override_get_for_folder (account_override, folder_uri);
+
+       gtk_combo_box_set_active_id (GTK_COMBO_BOX (widget), account_uid ? account_uid : "");
+       g_object_set_data_full (G_OBJECT (widget), "sao-folder-uri", folder_uri, g_free);
+
+       g_signal_connect (
+               widget, "changed",
+               G_CALLBACK (mail_identity_combo_box_changed_cb), account_override);
+
+       g_free (account_uid);
 
        return table;
 }
diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c
index 27091e2..aaf3488 100644
--- a/mail/em-folder-tree.c
+++ b/mail/em-folder-tree.c
@@ -554,6 +554,8 @@ folder_tree_maybe_expand_row (EMFolderTreeModel *model,
        if (u) {
                gchar *c = strrchr (key, '/');
 
+               /* 'c' cannot be NULL, because the above contructed 'key' has it there */
+               /* coverity[dereference] */
                *c = '\0';
                folder_tree_expand_node (key, folder_tree);
 
@@ -3036,12 +3038,10 @@ em_folder_tree_set_selected_list (EMFolderTree *folder_tree,
                                g_slist_append (priv->select_uris, u);
                }
 
-               end = strrchr (expand_key, '/');
-               do {
+               while (end = strrchr (expand_key, '/'), end) {
                        folder_tree_expand_node (expand_key, folder_tree);
                        *end = 0;
-                       end = strrchr (expand_key, '/');
-               } while (end);
+               }
 
                if (expand_only)
                        folder_tree_free_select_uri (u);
@@ -3108,33 +3108,39 @@ em_folder_tree_select_next_path (EMFolderTree *folder_tree,
                current_path = gtk_tree_model_get_path (model, &iter);
 
                do {
-               if (gtk_tree_model_iter_has_child (model, &iter)) {
-                       gtk_tree_model_iter_children (model, &child, &iter);
-                       path = gtk_tree_model_get_path (model, &child);
-                       iter = child;
-               } else {
-                       while (1) {
-                               gboolean has_parent;
+                       if (gtk_tree_model_iter_has_child (model, &iter)) {
+                               if (!gtk_tree_model_iter_children (model, &child, &iter))
+                                       break;
+                               path = gtk_tree_model_get_path (model, &child);
+                               iter = child;
+                       } else {
+                               while (1) {
+                                       gboolean has_parent;
 
-                               has_parent = gtk_tree_model_iter_parent (
-                                       model, &parent, &iter);
+                                       has_parent = gtk_tree_model_iter_parent (
+                                               model, &parent, &iter);
 
-                               if (gtk_tree_model_iter_next (model, &iter)) {
-                                       path = gtk_tree_model_get_path (model, &iter);
-                                       break;
-                               } else {
-                                       if (has_parent) {
-                                               iter =  parent;
-                                       } else {
-                                               /* Reached end. Wrapup*/
-                                               gtk_tree_model_get_iter_first (model, &iter);
+                                       if (gtk_tree_model_iter_next (model, &iter)) {
                                                path = gtk_tree_model_get_path (model, &iter);
                                                break;
+                                       } else {
+                                               if (has_parent) {
+                                                       iter =  parent;
+                                               } else {
+                                                       /* Reached end. Wrapup*/
+                                                       if (gtk_tree_model_get_iter_first (model, &iter))
+                                                               path = gtk_tree_model_get_path (model, &iter);
+                                                       else
+                                                               path = NULL;
+                                                       break;
+                                               }
                                        }
                                }
+
+                               if (!path)
+                                       break;
                        }
-               }
-               gtk_tree_model_get (model, &iter, COL_UINT_UNREAD, &unread, -1);
+                       gtk_tree_model_get (model, &iter, COL_UINT_UNREAD, &unread, -1);
 
                /* TODO : Flags here for better options */
                } while (skip_read_folders && unread <=0 &&
@@ -3153,6 +3159,7 @@ em_folder_tree_select_next_path (EMFolderTree *folder_tree,
                }
                gtk_tree_view_scroll_to_cell (tree_view, path, NULL, TRUE, 0.5f, 0.0f);
        }
+
        return;
 }
 
diff --git a/mail/em-utils.c b/mail/em-utils.c
index db68b96..6669ef5 100644
--- a/mail/em-utils.c
+++ b/mail/em-utils.c
@@ -590,7 +590,6 @@ em_utils_read_messages_from_stream (CamelFolder *folder,
 
        while (camel_mime_parser_step (mp, NULL, NULL) == CAMEL_MIME_PARSER_STATE_FROM) {
                CamelMimeMessage *msg;
-               gboolean success;
 
                /* NB: de-from filter, once written */
                msg = camel_mime_message_new ();
@@ -1060,6 +1059,8 @@ em_utils_selection_set_urilist (GtkSelectionData *data,
 
 exit:
        g_free (tmpdir);
+       /* the 'fd' from the 'save_as_mbox' part is freed within the 'fstream' */
+       /* coverity[leaked_handle] */
 }
 
 /**
@@ -1094,6 +1095,8 @@ em_utils_selection_get_urilist (GtkSelectionData *selection_data,
                if (url == NULL)
                        continue;
 
+               /* 'fd', if set, is freed within the 'stream' */
+               /* coverity[overwrite_var] */
                if (strcmp (url->protocol, "file") == 0
                    && (fd = g_open (url->path, O_RDONLY | O_BINARY, 0)) != -1) {
                        stream = camel_stream_fs_new_with_fd (fd);
@@ -1107,6 +1110,9 @@ em_utils_selection_get_urilist (GtkSelectionData *selection_data,
        }
 
        g_strfreev (uris);
+
+       /* 'fd', if set, is freed within the 'stream' */
+       /* coverity[leaked_handle] */
 }
 
 /* ********************************************************************** */
diff --git a/mail/importers/evolution-mbox-importer.c b/mail/importers/evolution-mbox-importer.c
index 5eb59e8..eb5746a 100644
--- a/mail/importers/evolution-mbox-importer.c
+++ b/mail/importers/evolution-mbox-importer.c
@@ -374,8 +374,7 @@ mbox_get_preview (EImport *ei,
        mp = camel_mime_parser_new ();
        camel_mime_parser_scan_from (mp, TRUE);
        if (camel_mime_parser_init_with_fd (mp, fd) == -1) {
-               g_object_unref (mp);
-               return NULL;
+               goto cleanup;
        }
 
        while (camel_mime_parser_step (mp, NULL, NULL) == CAMEL_MIME_PARSER_STATE_FROM) {
@@ -416,14 +415,18 @@ mbox_get_preview (EImport *ei,
        if (store) {
                GtkTreeView *tree_view;
                GtkTreeSelection *selection;
-               gboolean valid;
 
                preview = e_web_view_preview_new ();
                gtk_widget_show (preview);
 
                tree_view = e_web_view_preview_get_tree_view (
                        E_WEB_VIEW_PREVIEW (preview));
-               g_return_val_if_fail (tree_view != NULL, NULL);
+               if (!tree_view) {
+                       g_warn_if_reached ();
+                       gtk_widget_destroy (preview);
+                       preview = NULL;
+                       goto cleanup;
+               }
 
                gtk_tree_view_set_model (tree_view, GTK_TREE_MODEL (store));
                g_object_unref (store);
@@ -443,16 +446,20 @@ mbox_get_preview (EImport *ei,
                                E_WEB_VIEW_PREVIEW (preview));
 
                create_preview_func (G_OBJECT (preview), &preview_widget);
-               g_return_val_if_fail (preview_widget != NULL, NULL);
+               if (!preview_widget) {
+                       g_warn_if_reached ();
+                       goto cleanup;
+               }
 
                e_web_view_preview_set_preview (
                        E_WEB_VIEW_PREVIEW (preview), preview_widget);
                gtk_widget_show (preview_widget);
 
                selection = gtk_tree_view_get_selection (tree_view);
-               valid = gtk_tree_model_get_iter_first (
-                       GTK_TREE_MODEL (store), &iter);
-               g_return_val_if_fail (valid, NULL);
+               if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter)) {
+                       g_warn_if_reached ();
+                       goto cleanup;
+               }
                gtk_tree_selection_select_iter (selection, &iter);
 
                g_signal_connect (
@@ -463,6 +470,11 @@ mbox_get_preview (EImport *ei,
                        selection, E_WEB_VIEW_PREVIEW (preview));
        }
 
+ cleanup:
+       g_object_unref (mp);
+
+       /* 'fd' is freed together with 'mp' */
+       /* coverity[leaked_handle] */
        return preview;
 }
 
diff --git a/mail/importers/mail-importer.c b/mail/importers/mail-importer.c
index 0af34a3..ac432b5 100644
--- a/mail/importers/mail-importer.c
+++ b/mail/importers/mail-importer.c
@@ -203,6 +203,8 @@ fail1:
        /* FIXME Not passing a GCancellable or GError here. */
        camel_folder_synchronize_sync (folder, FALSE, NULL, NULL);
        g_object_unref (folder);
+       /* 'fd' is freed together with 'mp' */
+       /* coverity[leaked_handle] */
 }
 
 static void
diff --git a/mail/message-list.c b/mail/message-list.c
index 89a473a..b54af0f 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -1233,7 +1233,7 @@ thread_select_foreach (ETreePath path,
        do {
                last = node;
                node = node->parent;
-       } while (!G_NODE_IS_ROOT (node));
+       } while (node && !G_NODE_IS_ROOT (node));
 
        g_ptr_array_add (tsi->paths, last);
 
@@ -1719,14 +1719,14 @@ ml_tree_value_at_ex (ETreeModel *etm,
 
                                /* Extract the single label from the hashtable. */
                                g_hash_table_iter_init (&iter, ld.labels_tag2iter);
-                               g_hash_table_iter_next (&iter, NULL, (gpointer *) &label_defn);
+                               if (g_hash_table_iter_next (&iter, NULL, (gpointer *) &label_defn)) {
+                                       e_mail_label_list_store_get_color (ld.store, label_defn, &colour_val);
 
-                               e_mail_label_list_store_get_color (ld.store, label_defn, &colour_val);
-
-                               /* XXX Hack to avoid returning an allocated string. */
-                               colour_alloced = gdk_color_to_string (&colour_val);
-                               colour = g_intern_string (colour_alloced);
-                               g_free (colour_alloced);
+                                       /* XXX Hack to avoid returning an allocated string. */
+                                       colour_alloced = gdk_color_to_string (&colour_val);
+                                       colour = g_intern_string (colour_alloced);
+                                       g_free (colour_alloced);
+                               }
                        } else if (camel_message_info_flags (msg_info) & CAMEL_MESSAGE_FLAGGED) {
                                /* FIXME: extract from the important.xpm somehow. */
                                colour = "#A7453E";
@@ -5412,9 +5412,11 @@ message_list_regen_thread (GSimpleAsyncResult *simple,
 
        /* Handle search error or cancellation. */
 
-       if (local_error == NULL)
+       if (local_error == NULL) {
+               /* coverity[unchecked_value] */
                g_cancellable_set_error_if_cancelled (
                        cancellable, &local_error);
+       }
 
        if (local_error != NULL) {
                g_simple_async_result_take_error (simple, local_error);
@@ -5506,9 +5508,8 @@ message_list_regen_done_cb (GObject *source_object,
 
        activity = regen_data->activity;
 
-       g_simple_async_result_propagate_error (simple, &local_error);
-
-       if (e_activity_handle_cancellation (activity, local_error)) {
+       if (g_simple_async_result_propagate_error (simple, &local_error) &&
+           e_activity_handle_cancellation (activity, local_error)) {
                g_error_free (local_error);
                return;
 
diff --git a/modules/backup-restore/evolution-backup-tool.c b/modules/backup-restore/evolution-backup-tool.c
index 3ca07ec..d164d8b 100644
--- a/modules/backup-restore/evolution-backup-tool.c
+++ b/modules/backup-restore/evolution-backup-tool.c
@@ -98,7 +98,7 @@ static GOptionEntry options[] = {
 #define d(x)
 
 #define print_and_run(x) \
-       G_STMT_START { g_message ("%s", x); system (x); } G_STMT_END
+       G_STMT_START { g_message ("%s", x); if (system (x) == -1) g_warning ("%s: Failed to execute '%s'", 
G_STRFUNC, (x)); } G_STMT_END
 
 static gboolean check (const gchar *filename, gboolean *is_new_format);
 
diff --git a/modules/calendar/e-task-shell-view-private.c b/modules/calendar/e-task-shell-view-private.c
index 39b90b5..bacb46b 100644
--- a/modules/calendar/e-task-shell-view-private.c
+++ b/modules/calendar/e-task-shell-view-private.c
@@ -518,7 +518,7 @@ e_task_shell_view_private_dispose (ETaskShellView *task_shell_view)
                g_signal_handler_disconnect (
                        priv->settings,
                        priv->settings_hide_completed_tasks_value_handler_id);
-               priv->settings_hide_completed_tasks_units_handler_id = 0;
+               priv->settings_hide_completed_tasks_value_handler_id = 0;
        }
 
        g_clear_object (&priv->task_shell_backend);
diff --git a/modules/itip-formatter/e-mail-part-itip.c b/modules/itip-formatter/e-mail-part-itip.c
index e4e6302..447ff0d 100644
--- a/modules/itip-formatter/e-mail-part-itip.c
+++ b/modules/itip-formatter/e-mail-part-itip.c
@@ -88,16 +88,14 @@ mail_part_itip_bind_dom_element (EMailPart *part,
 
        if (!WEBKIT_DOM_IS_HTML_IFRAME_ELEMENT (element)) {
                WebKitDOMNodeList *nodes;
-               guint ii, length;
+               guint length;
 
                nodes = webkit_dom_element_get_elements_by_tag_name (
                        element, "iframe");
                length = webkit_dom_node_list_get_length (nodes);
-               for (ii = 0; ii < length; ii++) {
+               if (length > 0)
                        element = WEBKIT_DOM_ELEMENT (
-                               webkit_dom_node_list_item (nodes, ii));
-                       break;
-               }
+                               webkit_dom_node_list_item (nodes, 0));
        }
 
        g_return_if_fail (WEBKIT_DOM_IS_HTML_IFRAME_ELEMENT (element));
diff --git a/modules/itip-formatter/itip-view.c b/modules/itip-formatter/itip-view.c
index 1c193a4..a490927 100644
--- a/modules/itip-formatter/itip-view.c
+++ b/modules/itip-formatter/itip-view.c
@@ -4483,6 +4483,7 @@ get_uri_for_part (CamelMimePart *mime_part)
        /* Loading should be instantaneous since we already have
         * the full content, but we still have to crank the main
         * loop until the callback gets triggered. */
+       /* coverity[loop_condition] */
        while (!status.done)
                gtk_main_iteration ();
 
@@ -4495,6 +4496,7 @@ get_uri_for_part (CamelMimePart *mime_part)
 
        /* We can't return until we have results, so crank
         * the main loop until the callback gets triggered. */
+       /* coverity[loop_condition] */
        while (!status.done)
                gtk_main_iteration ();
 
@@ -6004,6 +6006,7 @@ itip_view_init_view (ItipView *view)
                        case ICAL_METHOD_REQUEST:
                                 /* FIXME What about the name? */
                                itip_view_set_delegator (view, info->delegator_name ? info->delegator_name : 
info->delegator_address);
+                               /* coverity[fallthrough] */
                        case ICAL_METHOD_PUBLISH:
                        case ICAL_METHOD_ADD:
                        case ICAL_METHOD_CANCEL:
@@ -6019,13 +6022,13 @@ itip_view_init_view (ItipView *view)
                                        itip_view_set_organizer_sentby (
                                                view, itip_strip_mailto (organizer.sentby));
 
-                                       if (info->my_address) {
-                                               if (!(organizer.value && !g_ascii_strcasecmp 
(itip_strip_mailto (organizer.value), info->my_address))
-                                                       && !(organizer.sentby && !g_ascii_strcasecmp 
(itip_strip_mailto (organizer.sentby), info->my_address))
-                                                       && (info->to_address && g_ascii_strcasecmp 
(info->to_address, info->my_address)))
-                                                       itip_view_set_proxy (view, info->to_name ? 
info->to_name : info->to_address);
-                                       }
-                                       break;
+                               if (info->my_address) {
+                                       if (!(organizer.value && !g_ascii_strcasecmp (itip_strip_mailto 
(organizer.value), info->my_address))
+                                               && !(organizer.sentby && !g_ascii_strcasecmp 
(itip_strip_mailto (organizer.sentby), info->my_address))
+                                               && (info->to_address && g_ascii_strcasecmp (info->to_address, 
info->my_address)))
+                                               itip_view_set_proxy (view, info->to_name ? info->to_name : 
info->to_address);
+                               }
+                               break;
                        case ICAL_METHOD_REPLY:
                        case ICAL_METHOD_REFRESH:
                        case ICAL_METHOD_COUNTER:
diff --git a/modules/mail-config/e-mail-config-google-summary.c 
b/modules/mail-config/e-mail-config-google-summary.c
index d1d51a4..1517849 100644
--- a/modules/mail-config/e-mail-config-google-summary.c
+++ b/modules/mail-config/e-mail-config-google-summary.c
@@ -240,7 +240,7 @@ mail_config_google_summary_constructed (GObject *object)
        widget = gtk_grid_new ();
        gtk_grid_set_row_spacing (GTK_GRID (widget), 6);
        gtk_grid_set_column_spacing (GTK_GRID (widget), 6);
-       gtk_box_pack_start (GTK_BOX (page), widget, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
 
        g_object_bind_property (
                extension, "applicable",
diff --git a/modules/mail-config/e-mail-config-yahoo-summary.c 
b/modules/mail-config/e-mail-config-yahoo-summary.c
index 2153f9c..0d6ea35 100644
--- a/modules/mail-config/e-mail-config-yahoo-summary.c
+++ b/modules/mail-config/e-mail-config-yahoo-summary.c
@@ -235,7 +235,7 @@ mail_config_yahoo_summary_constructed (GObject *object)
        widget = gtk_grid_new ();
        gtk_grid_set_row_spacing (GTK_GRID (widget), 6);
        gtk_grid_set_column_spacing (GTK_GRID (widget), 6);
-       gtk_box_pack_start (GTK_BOX (page), widget, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
 
        g_object_bind_property (
                extension, "applicable",
diff --git a/modules/mail/e-mail-shell-view-private.c b/modules/mail/e-mail-shell-view-private.c
index bb97910..c367f68 100644
--- a/modules/mail/e-mail-shell-view-private.c
+++ b/modules/mail/e-mail-shell-view-private.c
@@ -178,9 +178,6 @@ ctrl:
                        goto exit;
        }
 
-       /* All branches jump past this. */
-       g_return_val_if_reached (FALSE);
-
 emit:
        /* Forward the key press to the EMailReader interface. */
        g_signal_emit_by_name (mail_view, "key-press-event", event, &handled);
diff --git a/plugins/attachment-reminder/attachment-reminder.c 
b/plugins/attachment-reminder/attachment-reminder.c
index 52a0323..5ee3719 100644
--- a/plugins/attachment-reminder/attachment-reminder.c
+++ b/plugins/attachment-reminder/attachment-reminder.c
@@ -622,9 +622,7 @@ e_plugin_lib_get_configure_widget (EPlugin *plugin)
                gtk_list_store_set (ui->store, &iter, CLUE_KEYWORD_COLUMN, clue_list[i], -1);
        }
 
-       if (clue_list) {
-               g_strfreev (clue_list);
-       }
+       g_strfreev (clue_list);
 
        /* Add the list here */
 
diff --git a/plugins/dbx-import/dbx-importer.c b/plugins/dbx-import/dbx-importer.c
index 47a2bb9..5fe0863 100644
--- a/plugins/dbx-import/dbx-importer.c
+++ b/plugins/dbx-import/dbx-importer.c
@@ -446,7 +446,8 @@ dbx_read_mail_body (DbxImporter *m,
        guint32 buflen = 0x200;
        guchar *buffer = g_malloc (buflen);
 
-       ftruncate (bodyfd, 0);
+       if (ftruncate (bodyfd, 0) == -1)
+               g_warning ("%s: Failed to truncate file: %s", G_STRFUNC, g_strerror (errno));
        lseek (bodyfd, 0, SEEK_SET);
 
        while (offset) {
diff --git a/plugins/email-custom-header/email-custom-header.c 
b/plugins/email-custom-header/email-custom-header.c
index 78364fa..c7e8f50 100644
--- a/plugins/email-custom-header/email-custom-header.c
+++ b/plugins/email-custom-header/email-custom-header.c
@@ -177,6 +177,7 @@ epech_header_options_cb (GtkDialog *dialog,
        switch (state) {
                case GTK_RESPONSE_OK:
                        epech_get_widgets_data (mch);
+                       /* coverity[fallthrough] */
                case GTK_RESPONSE_CANCEL:
                        gtk_widget_hide (priv->main);
                        gtk_widget_destroy (priv->main);
diff --git a/plugins/external-editor/external-editor.c b/plugins/external-editor/external-editor.c
index 8f6e782..97cb6ab 100644
--- a/plugins/external-editor/external-editor.c
+++ b/plugins/external-editor/external-editor.c
@@ -26,6 +26,8 @@
 #include <config.h>
 #endif
 
+#include <errno.h>
+
 #include <mail/em-config.h>
 #include <mail/em-composer-utils.h>
 #include <e-msg-composer.h>
@@ -374,7 +376,9 @@ external_editor_thread (gpointer user_data)
                        g_idle_add ((GSourceFunc) update_composer_text, array);
 
                        /* We no longer need that temporary file */
-                       g_remove (filename);
+                       if (g_remove (filename) == -1)
+                               g_warning ("%s: Failed to remove file '%s': %s",
+                                          G_STRFUNC, filename, g_strerror (errno));
                        g_free (filename);
                }
        }
diff --git a/plugins/mail-to-task/mail-to-task.c b/plugins/mail-to-task/mail-to-task.c
index b2c995e..f4bfe19 100644
--- a/plugins/mail-to-task/mail-to-task.c
+++ b/plugins/mail-to-task/mail-to-task.c
@@ -852,23 +852,19 @@ do_mail_to_event (AsyncData *data)
        if (error != NULL) {
                report_error_idle (_("Cannot open calendar. %s"), error->message);
        } else if (e_client_is_readonly (E_CLIENT (client))) {
-               if (error != NULL)
-                       report_error_idle ("Check readonly failed. %s", error->message);
-               else {
-                       switch (data->source_type) {
-                       case E_CAL_CLIENT_SOURCE_TYPE_EVENTS:
-                               report_error_idle (_("Selected calendar is read only, thus cannot create 
event there. Select other calendar, please."), NULL);
-                               break;
-                       case E_CAL_CLIENT_SOURCE_TYPE_TASKS:
-                               report_error_idle (_("Selected task list is read only, thus cannot create 
task there. Select other task list, please."), NULL);
-                               break;
-                       case E_CAL_CLIENT_SOURCE_TYPE_MEMOS:
-                               report_error_idle (_("Selected memo list is read only, thus cannot create 
memo there. Select other memo list, please."), NULL);
-                               break;
-                       default:
-                               g_assert_not_reached ();
-                               break;
-                       }
+               switch (data->source_type) {
+               case E_CAL_CLIENT_SOURCE_TYPE_EVENTS:
+                       report_error_idle (_("Selected calendar is read only, thus cannot create event there. 
Select other calendar, please."), NULL);
+                       break;
+               case E_CAL_CLIENT_SOURCE_TYPE_TASKS:
+                       report_error_idle (_("Selected task list is read only, thus cannot create task there. 
Select other task list, please."), NULL);
+                       break;
+               case E_CAL_CLIENT_SOURCE_TYPE_MEMOS:
+                       report_error_idle (_("Selected memo list is read only, thus cannot create memo there. 
Select other memo list, please."), NULL);
+                       break;
+               default:
+                       g_assert_not_reached ();
+                       break;
                }
        } else {
                gint i;
@@ -1114,7 +1110,6 @@ mail_to_event (ECalClientSourceType source_type,
        GList *list, *iter;
        GtkWindow *parent;
        const gchar *extension_name;
-       GError *error = NULL;
 
        parent = e_mail_reader_get_window (reader);
        uids = e_mail_reader_get_selected_uids (reader);
@@ -1193,16 +1188,6 @@ mail_to_event (ECalClientSourceType source_type,
                                E_SOURCE_SELECTOR_DIALOG (dialog));
 
                gtk_widget_destroy (dialog);
-       } else if (!source && default_source) {
-               source = default_source;
-       } else if (!source) {
-               e_notice (
-                       NULL, GTK_MESSAGE_ERROR,
-                       _("No writable calendar is available."));
-
-               if (error != NULL)
-                       g_error_free (error);
-               goto exit;
        }
 
        if (source) {
@@ -1234,7 +1219,6 @@ mail_to_event (ECalClientSourceType source_type,
                }
        }
 
-exit:
        g_object_unref (default_source);
        g_ptr_array_unref (uids);
 }
diff --git a/plugins/mailing-list-actions/mailing-list-actions.c 
b/plugins/mailing-list-actions/mailing-list-actions.c
index d946601..35a379c 100644
--- a/plugins/mailing-list-actions/mailing-list-actions.c
+++ b/plugins/mailing-list-actions/mailing-list-actions.c
@@ -229,7 +229,7 @@ emla_list_action_cb (CamelFolder *folder,
                /* get URL portion */
                url = g_strndup (headerpos, end - headerpos);
 
-               if (strncmp (url, "mailto:";, 6) == 0) {
+               if (url && strncmp (url, "mailto:";, 6) == 0) {
                        if (emla_action_headers[t].interactive)
                                send_message_response = GTK_RESPONSE_NO;
                        else
@@ -253,7 +253,7 @@ emla_list_action_cb (CamelFolder *folder,
                        }
 
                        goto exit;
-               } else {
+               } else if (url && *url) {
                        e_show_uri (window, url);
                        goto exit;
                }
diff --git a/plugins/pst-import/pst-importer.c b/plugins/pst-import/pst-importer.c
index 853a16c..f16f476 100644
--- a/plugins/pst-import/pst-importer.c
+++ b/plugins/pst-import/pst-importer.c
@@ -807,13 +807,14 @@ pst_import_folders (PstImporter *m,
                     pst_desc_tree *topitem)
 {
        GHashTable *node_to_folderuri; /* pointers of hierarchy nodes, to them associated folder uris */
-       pst_desc_tree *d_ptr;
+       pst_desc_tree *d_ptr = NULL;
 
        node_to_folderuri = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free);
-       d_ptr = topitem->child;
 
-       if (topitem)
+       if (topitem) {
+               d_ptr = topitem->child;
                g_hash_table_insert (node_to_folderuri, topitem, g_strdup (m->folder_uri));
+       }
 
        /* Walk through folder tree */
        while (d_ptr != NULL && (g_cancellable_is_cancelled (m->cancellable) == FALSE)) {
@@ -866,7 +867,7 @@ pst_import_folders (PstImporter *m,
                                break;
                        }
 
-                       d_ptr = d_ptr->next;
+                       d_ptr = d_ptr ? d_ptr->next : NULL;
                }
 
                g_free (previous_folder);
@@ -1865,6 +1866,8 @@ fill_calcomponent (PstImporter *m,
                case PST_FREEBUSY_FREE:
                        /* mark as transparent and as confirmed */
                        e_cal_component_set_transparency (ec, E_CAL_COMPONENT_TRANSP_TRANSPARENT);
+                       e_cal_component_set_status (ec, ICAL_STATUS_CONFIRMED);
+                       break;
                case PST_FREEBUSY_BUSY:
                case PST_FREEBUSY_OUT_OF_OFFICE:
                        e_cal_component_set_status (ec, ICAL_STATUS_CONFIRMED);
diff --git a/plugins/publish-calendar/url-editor-dialog.c b/plugins/publish-calendar/url-editor-dialog.c
index 04bbe5d..d01c585 100644
--- a/plugins/publish-calendar/url-editor-dialog.c
+++ b/plugins/publish-calendar/url-editor-dialog.c
@@ -72,6 +72,9 @@ create_uri (UrlEditorDialog *dialog)
                case TYPE_ANON_FTP:
                        g_free (username);
                        username = g_strdup ("anonymous");
+                       method = "ftp";
+                       break;
+
                case TYPE_FTP:
                        method = "ftp";
                        break;
diff --git a/plugins/save-calendar/save-calendar.c b/plugins/save-calendar/save-calendar.c
index c713612..e4228cb 100644
--- a/plugins/save-calendar/save-calendar.c
+++ b/plugins/save-calendar/save-calendar.c
@@ -82,14 +82,14 @@ on_type_combobox_changed (GtkComboBox *combobox,
                extra_widget_foreach_hide,
                g_object_get_data (G_OBJECT (combobox), "format-box"));
 
-       gtk_combo_box_get_active_iter (combobox, &iter);
+       if (!gtk_combo_box_get_active_iter (combobox, &iter))
+               return;
 
        gtk_tree_model_get (
                model, &iter,
                DEST_HANDLER, &handler, -1);
 
-       if (handler->options_widget)
-       {
+       if (handler && handler->options_widget) {
                gtk_widget_show (handler->options_widget);
        }
 
@@ -202,25 +202,30 @@ ask_destination_and_save (ESourceSelector *selector,
        if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) {
                gchar *tmp = NULL;
 
-               gtk_combo_box_get_active_iter (combo, &iter);
-               gtk_tree_model_get (
-                       model, &iter,
-                       DEST_HANDLER, &handler, -1);
+               if (gtk_combo_box_get_active_iter (combo, &iter))
+                       gtk_tree_model_get (
+                               model, &iter,
+                               DEST_HANDLER, &handler, -1);
+               else
+                       handler = NULL;
 
-              dest_uri = gtk_file_chooser_get_uri
-                       (GTK_FILE_CHOOSER (dialog));
+               dest_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
 
-               tmp = strstr (dest_uri, handler->filename_ext);
+               if (handler) {
+                       tmp = strstr (dest_uri, handler->filename_ext);
 
-               if (!(tmp && *(tmp + strlen (handler->filename_ext)) == '\0')) {
+                       if (!(tmp && *(tmp + strlen (handler->filename_ext)) == '\0')) {
 
-                       gchar *temp;
-                       temp = g_strconcat (dest_uri, handler->filename_ext, NULL);
-                       g_free (dest_uri);
-                       dest_uri = temp;
-               }
+                               gchar *temp;
+                               temp = g_strconcat (dest_uri, handler->filename_ext, NULL);
+                               g_free (dest_uri);
+                               dest_uri = temp;
+                       }
 
-               handler->save (handler, selector, type, dest_uri);
+                       handler->save (handler, selector, type, dest_uri);
+               } else {
+                       g_warn_if_reached ();
+               }
        }
 
        /* Free the handlers */
diff --git a/shell/e-convert-local-mail.c b/shell/e-convert-local-mail.c
index 81c9e04..ab77381 100644
--- a/shell/e-convert-local-mail.c
+++ b/shell/e-convert-local-mail.c
@@ -16,8 +16,11 @@
  *
  */
 
+#ifdef HAVE_CONFIG_H
 #include <config.h>
+#endif
 
+#include <errno.h>
 #include <glib/gstdio.h>
 #include <camel/camel.h>
 
@@ -168,8 +171,11 @@ rename_mbox_dir (ESource *mbox_source,
                g_file_test (old_mail_dir, G_FILE_TEST_EXISTS) &&
                !g_file_test (new_mail_dir, G_FILE_TEST_EXISTS);
 
-       if (need_rename)
-               g_rename (old_mail_dir, new_mail_dir);
+       if (need_rename) {
+               if (g_rename (old_mail_dir, new_mail_dir) == -1)
+                       g_warning ("%s: Failed to rename '%s' to '%s': %s",
+                                  G_STRFUNC, old_mail_dir, new_mail_dir, g_strerror (errno));
+       }
 
        g_free (old_mail_dir);
        g_free (new_mail_dir);
@@ -246,7 +252,9 @@ migrate_mbox_to_maildir (EShell *shell,
 
        path = g_build_filename (data_dir, "local", NULL);
        g_object_set (settings, "path", path, NULL);
-       g_mkdir (path, 0700);
+       if (g_mkdir (path, 0700) == -1)
+               g_warning ("%s: Failed to make directory '%s': %s",
+                          G_STRFUNC, path, g_strerror (errno));
        g_free (path);
 
        g_object_unref (settings);
@@ -257,6 +265,7 @@ migrate_mbox_to_maildir (EShell *shell,
        ms.complete = FALSE;
 
        thread = g_thread_new (NULL, (GThreadFunc) migrate_stores, &ms);
+       /* coverity[loop_condition] */
        while (!ms.complete)
                g_main_context_iteration (NULL, TRUE);
 
diff --git a/shell/e-shell-migrate.c b/shell/e-shell-migrate.c
index 20e9696..f7de962 100644
--- a/shell/e-shell-migrate.c
+++ b/shell/e-shell-migrate.c
@@ -19,12 +19,15 @@
  *
  */
 
-#include "e-shell-migrate.h"
-
+#ifdef HAVE_CONFIG_H
 #include <config.h>
+#endif
+
+#include <errno.h>
 #include <glib/gstdio.h>
 #include <libedataserver/libedataserver.h>
 
+#include "e-shell-migrate.h"
 #include "evo-version.h"
 
 static gboolean
@@ -157,7 +160,9 @@ change_dir_modes (const gchar *path)
                g_free (full_path);
        }
 
-       g_chmod (path, 0700);
+       if (g_chmod (path, 0700) == -1)
+               g_warning ("%s: Failed to chmod of '%s': %s", G_STRFUNC, path, g_strerror (errno));
+
        g_dir_close (dir);
 }
 
diff --git a/shell/e-shell-utils.c b/shell/e-shell-utils.c
index 97982cf..1c3f8f8 100644
--- a/shell/e-shell-utils.c
+++ b/shell/e-shell-utils.c
@@ -156,7 +156,7 @@ e_shell_run_save_dialog (EShell *shell,
                gchar **flts = g_strsplit (filters, ";", -1);
                gint i;
 
-               for (i = 0; flts[i]; i++) {
+               for (i = 0; flts && flts[i]; i++) {
                        GtkFileFilter *filter = gtk_file_filter_new ();
                        gchar *flt = flts[i];
                        gchar *delim = strchr (flt, ':'), *next = NULL;
diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c
index fe9724c..ca5cdb0 100644
--- a/shell/e-shell-view.c
+++ b/shell/e-shell-view.c
@@ -452,6 +452,7 @@ shell_view_get_property (GObject *object,
                        g_value_set_object (
                                value, e_shell_view_get_shell_backend (
                                E_SHELL_VIEW (object)));
+                       return;
 
                case PROP_SHELL_CONTENT:
                        g_value_set_object (
diff --git a/shell/killev.c b/shell/killev.c
index ea4ad2a..2157cdb 100644
--- a/shell/killev.c
+++ b/shell/killev.c
@@ -163,7 +163,8 @@ main (gint argc,
 
 kill:
 #ifdef KILL_PROCESS_CMD
-       system (KILL_PROCESS_CMD " -QUIT evolution 2> /dev/null");
+       if (system (KILL_PROCESS_CMD " -QUIT evolution 2> /dev/null") == -1)
+               g_warning ("%s: Failed to execute: '%s'", G_STRFUNC, KILL_PROCESS_CMD);
 #else
        g_printerr ("No \"kill\" command available.\n");
 #endif
diff --git a/smime/lib/e-cert-db.c b/smime/lib/e-cert-db.c
index e8e91a4..abb07be 100644
--- a/smime/lib/e-cert-db.c
+++ b/smime/lib/e-cert-db.c
@@ -1094,6 +1094,7 @@ e_cert_db_import_certs_from_file (ECertDB *cert_db,
                        rv = e_cert_db_import_email_cert (cert_db, buf, bytes_read, imported_certs, error);
                        break;
 
+               /* coverity[dead_error_begin] */
                default:
                        rv = FALSE;
                        break;


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