diff -up evolution-3.8.5/addressbook/gui/widgets/e-addressbook-table-adapter.c.evo-leaks evolution-3.8.5/addressbook/gui/widgets/e-addressbook-table-adapter.c --- evolution-3.8.5/addressbook/gui/widgets/e-addressbook-table-adapter.c.evo-leaks 2013-08-10 23:38:42.000000000 +0200 +++ evolution-3.8.5/addressbook/gui/widgets/e-addressbook-table-adapter.c 2014-05-13 14:51:30.900890765 +0200 @@ -148,7 +148,7 @@ addressbook_value_at (ETableModel *etc, } } - return (gpointer)(value ? value : ""); + return g_strdup (value ? value : ""); } /* This function sets the value at a particular point in our ETableModel. */ diff -up evolution-3.8.5/calendar/gui/dialogs/event-page.c.evo-leaks evolution-3.8.5/calendar/gui/dialogs/event-page.c --- evolution-3.8.5/calendar/gui/dialogs/event-page.c.evo-leaks 2013-07-23 14:52:33.000000000 +0200 +++ evolution-3.8.5/calendar/gui/dialogs/event-page.c 2014-05-13 14:51:30.900890765 +0200 @@ -938,6 +938,7 @@ event_page_finalize (GObject *object) g_ptr_array_free (priv->deleted_attendees, TRUE); g_free (priv->old_summary); + g_free (priv->user_add); priv->alarm_list_dlg_widget = NULL; diff -up evolution-3.8.5/calendar/gui/e-alarm-list.c.evo-leaks evolution-3.8.5/calendar/gui/e-alarm-list.c --- evolution-3.8.5/calendar/gui/e-alarm-list.c.evo-leaks 2013-07-23 14:52:28.000000000 +0200 +++ evolution-3.8.5/calendar/gui/e-alarm-list.c 2014-05-13 14:51:30.900890765 +0200 @@ -79,9 +79,22 @@ G_DEFINE_TYPE_WITH_CODE ( e_alarm_list_tree_model_init)) static void +alarm_list_dispose (GObject *object) +{ + e_alarm_list_clear (E_ALARM_LIST (object)); + + G_OBJECT_CLASS (e_alarm_list_parent_class)->dispose (object); +} + +static void e_alarm_list_class_init (EAlarmListClass *class) { + GObjectClass *object_class; + column_types[E_ALARM_LIST_COLUMN_DESCRIPTION] = G_TYPE_STRING; + + object_class = G_OBJECT_CLASS (class); + object_class->dispose = alarm_list_dispose; } static void diff -up evolution-3.8.5/calendar/gui/e-cal-model-calendar.c.evo-leaks evolution-3.8.5/calendar/gui/e-cal-model-calendar.c --- evolution-3.8.5/calendar/gui/e-cal-model-calendar.c.evo-leaks 2013-07-23 14:52:31.000000000 +0200 +++ evolution-3.8.5/calendar/gui/e-cal-model-calendar.c 2014-05-13 14:51:30.901890765 +0200 @@ -438,8 +438,6 @@ ecmc_free_value (ETableModel *etm, case E_CAL_MODEL_CALENDAR_FIELD_DTEND : case E_CAL_MODEL_CALENDAR_FIELD_LOCATION : case E_CAL_MODEL_CALENDAR_FIELD_TRANSPARENCY : - if (value) - g_free (value); break; } } diff -up evolution-3.8.5/calendar/gui/e-cal-model-tasks.c.evo-leaks evolution-3.8.5/calendar/gui/e-cal-model-tasks.c --- evolution-3.8.5/calendar/gui/e-cal-model-tasks.c.evo-leaks 2013-07-23 14:52:35.000000000 +0200 +++ evolution-3.8.5/calendar/gui/e-cal-model-tasks.c 2014-05-13 14:51:30.901890765 +0200 @@ -1049,8 +1049,6 @@ ecmt_free_value (ETableModel *etm, case E_CAL_MODEL_TASKS_FIELD_PRIORITY : case E_CAL_MODEL_TASKS_FIELD_STATUS : case E_CAL_MODEL_TASKS_FIELD_URL : - if (value) - g_free (value); break; case E_CAL_MODEL_TASKS_FIELD_PERCENT : case E_CAL_MODEL_TASKS_FIELD_COMPLETE : @@ -1076,7 +1074,7 @@ ecmt_initialize_value (ETableModel *etm, case E_CAL_MODEL_TASKS_FIELD_PRIORITY : case E_CAL_MODEL_TASKS_FIELD_STATUS : case E_CAL_MODEL_TASKS_FIELD_URL : - return g_strdup (""); + return (gpointer) ""; case E_CAL_MODEL_TASKS_FIELD_COMPLETED : case E_CAL_MODEL_TASKS_FIELD_DUE : case E_CAL_MODEL_TASKS_FIELD_COMPLETE : diff -up evolution-3.8.5/calendar/gui/e-cal-model.c.evo-leaks evolution-3.8.5/calendar/gui/e-cal-model.c --- evolution-3.8.5/calendar/gui/e-cal-model.c.evo-leaks 2013-07-23 14:52:32.000000000 +0200 +++ evolution-3.8.5/calendar/gui/e-cal-model.c 2014-05-13 14:51:30.901890765 +0200 @@ -701,7 +701,7 @@ cal_model_finalize (GObject *object) } g_object_unref (comp_data); } - g_ptr_array_free (priv->objects, FALSE); + g_ptr_array_free (priv->objects, TRUE); g_mutex_clear (&priv->notify_lock); @@ -1045,7 +1045,7 @@ get_categories (ECalModelComponent *comp } } - return comp_data->priv->categories_str->str; + return g_strdup (comp_data->priv->categories_str->str); } static gchar * @@ -1087,24 +1087,18 @@ static gpointer get_description (ECalModelComponent *comp_data) { icalproperty *prop; - static GString *str = NULL; - - if (str) { - g_string_free (str, TRUE); - str = NULL; - } prop = icalcomponent_get_first_property (comp_data->icalcomp, ICAL_DESCRIPTION_PROPERTY); if (prop) { - str = g_string_new (NULL); + GString *str = g_string_new (NULL); do { str = g_string_append (str, icalproperty_get_description (prop)); } while ((prop = icalcomponent_get_next_property (comp_data->icalcomp, ICAL_DESCRIPTION_PROPERTY))); - return str->str; + return g_string_free (str, FALSE); } - return (gpointer) ""; + return g_strdup (""); } static ECellDateEditValue * @@ -1204,9 +1198,9 @@ get_summary (ECalModelComponent *comp_da prop = icalcomponent_get_first_property (comp_data->icalcomp, ICAL_SUMMARY_PROPERTY); if (prop) - return (gpointer) icalproperty_get_summary (prop); + return g_strdup (icalproperty_get_summary (prop)); - return (gpointer) ""; + return g_strdup (""); } static gchar * @@ -1789,8 +1783,8 @@ ecm_free_value (ETableModel *etm, case E_CAL_MODEL_FIELD_HAS_ALARMS : case E_CAL_MODEL_FIELD_ICON : case E_CAL_MODEL_FIELD_COLOR : + case E_CAL_MODEL_FIELD_DTSTART: break; - case E_CAL_MODEL_FIELD_DTSTART : case E_CAL_MODEL_FIELD_CREATED : case E_CAL_MODEL_FIELD_LASTMODIFIED : if (value) diff -up evolution-3.8.5/calendar/gui/e-cell-date-edit-text.c.evo-leaks evolution-3.8.5/calendar/gui/e-cell-date-edit-text.c --- evolution-3.8.5/calendar/gui/e-cell-date-edit-text.c.evo-leaks 2013-07-23 14:52:32.000000000 +0200 +++ evolution-3.8.5/calendar/gui/e-cell-date-edit-text.c 2014-05-13 14:51:30.901890765 +0200 @@ -135,6 +135,8 @@ cell_date_edit_text_get_text (ECellText static void cell_date_edit_text_free_text (ECellText *cell, + ETableModel *model, + gint col, gchar *text) { g_free (text); diff -up evolution-3.8.5/calendar/gui/e-day-view.c.evo-leaks evolution-3.8.5/calendar/gui/e-day-view.c --- evolution-3.8.5/calendar/gui/e-day-view.c.evo-leaks 2014-05-13 14:51:30.895890765 +0200 +++ evolution-3.8.5/calendar/gui/e-day-view.c 2014-05-13 14:51:30.902890765 +0200 @@ -803,6 +803,12 @@ day_view_dispose (GObject *object) day_view->grabbed_pointer = NULL; } + g_free (day_view->marcus_bains_day_view_color); + day_view->marcus_bains_day_view_color = NULL; + + g_free (day_view->marcus_bains_time_bar_color); + day_view->marcus_bains_time_bar_color = NULL; + /* Chain up to parent's dispose() method. */ G_OBJECT_CLASS (e_day_view_parent_class)->dispose (object); } diff -up evolution-3.8.5/calendar/gui/e-meeting-list-view.c.evo-leaks evolution-3.8.5/calendar/gui/e-meeting-list-view.c --- evolution-3.8.5/calendar/gui/e-meeting-list-view.c.evo-leaks 2013-07-23 14:52:36.000000000 +0200 +++ evolution-3.8.5/calendar/gui/e-meeting-list-view.c 2014-05-13 14:51:30.902890765 +0200 @@ -839,6 +839,8 @@ e_meeting_list_view_column_set_visible ( break; } } + + g_list_free (cols); } void diff -up evolution-3.8.5/e-util/e-cell-combo.c.evo-leaks evolution-3.8.5/e-util/e-cell-combo.c --- evolution-3.8.5/e-util/e-cell-combo.c.evo-leaks 2013-07-23 14:52:10.000000000 +0200 +++ evolution-3.8.5/e-util/e-cell-combo.c 2014-05-13 14:51:30.903890765 +0200 @@ -407,7 +407,8 @@ e_cell_combo_select_matching_item (ECell if (!found) gtk_tree_selection_unselect_all (selection); - e_cell_text_free_text (ecell_text, cell_text); + e_cell_text_free_text (ecell_text, ecv->e_table_model, + ecol->col_idx, cell_text); } static void @@ -820,7 +821,8 @@ e_cell_combo_update_cell (ECellCombo *ec ecol->col_idx, ecp->popup_row, text); } - e_cell_text_free_text (ecell_text, old_text); + e_cell_text_free_text (ecell_text, ecv->e_table_model, + ecol->col_idx, old_text); g_free (text); } diff -up evolution-3.8.5/e-util/e-cell-date-edit.c.evo-leaks evolution-3.8.5/e-util/e-cell-date-edit.c --- evolution-3.8.5/e-util/e-cell-date-edit.c.evo-leaks 2013-07-23 14:52:05.000000000 +0200 +++ evolution-3.8.5/e-util/e-cell-date-edit.c 2014-05-13 14:51:30.903890765 +0200 @@ -564,7 +564,8 @@ e_cell_date_edit_set_popup_values (ECell } } - e_cell_text_free_text (ecell_text, cell_text); + e_cell_text_free_text (ecell_text, ecv->e_table_model, + ecol->col_idx, cell_text); } static void @@ -964,7 +965,8 @@ e_cell_date_edit_update_cell (ECellDateE ecol->col_idx, ecp->popup_row, NULL); } - e_cell_text_free_text (ecell_text, old_text); + e_cell_text_free_text (ecell_text, ecv->e_table_model, + ecol->col_idx, old_text); } static void diff -up evolution-3.8.5/e-util/e-cell-date.c.evo-leaks evolution-3.8.5/e-util/e-cell-date.c --- evolution-3.8.5/e-util/e-cell-date.c.evo-leaks 2013-07-23 14:52:04.000000000 +0200 +++ evolution-3.8.5/e-util/e-cell-date.c 2014-05-13 14:51:30.903890765 +0200 @@ -63,6 +63,8 @@ ecd_get_text (ECellText *cell, static void ecd_free_text (ECellText *cell, + ETableModel *model, + gint col, gchar *text) { g_free (text); diff -up evolution-3.8.5/e-util/e-cell-number.c.evo-leaks evolution-3.8.5/e-util/e-cell-number.c --- evolution-3.8.5/e-util/e-cell-number.c.evo-leaks 2013-07-23 14:52:13.000000000 +0200 +++ evolution-3.8.5/e-util/e-cell-number.c 2014-05-13 14:51:30.903890765 +0200 @@ -50,6 +50,8 @@ ecn_get_text (ECellText *cell, static void ecn_free_text (ECellText *cell, + ETableModel *model, + gint col, gchar *text) { g_free (text); diff -up evolution-3.8.5/e-util/e-cell-percent.c.evo-leaks evolution-3.8.5/e-util/e-cell-percent.c --- evolution-3.8.5/e-util/e-cell-percent.c.evo-leaks 2013-07-23 14:51:59.000000000 +0200 +++ evolution-3.8.5/e-util/e-cell-percent.c 2014-05-13 14:51:30.903890765 +0200 @@ -63,6 +63,8 @@ ecp_get_text (ECellText *cell, static void ecp_free_text (ECellText *cell, + ETableModel *model, + gint col, gchar *text) { /* Do Nothing. */ diff -up evolution-3.8.5/e-util/e-cell-size.c.evo-leaks evolution-3.8.5/e-util/e-cell-size.c --- evolution-3.8.5/e-util/e-cell-size.c.evo-leaks 2013-07-23 14:52:08.000000000 +0200 +++ evolution-3.8.5/e-util/e-cell-size.c 2014-05-13 14:51:30.903890765 +0200 @@ -55,6 +55,8 @@ ecd_get_text (ECellText *cell, static void ecd_free_text (ECellText *cell, + ETableModel *model, + gint col, gchar *text) { g_free (text); diff -up evolution-3.8.5/e-util/e-cell-text.c.evo-leaks evolution-3.8.5/e-util/e-cell-text.c --- evolution-3.8.5/e-util/e-cell-text.c.evo-leaks 2013-08-03 15:22:43.000000000 +0200 +++ evolution-3.8.5/e-util/e-cell-text.c 2014-05-13 14:51:30.904890765 +0200 @@ -218,8 +218,11 @@ ect_real_get_text (ECellText *cell, static void ect_real_free_text (ECellText *cell, + ETableModel *model, + gint col, gchar *text) { + e_table_model_free_value (model, col, text); } /* This is the default method for setting the ETableModel value based on @@ -600,7 +603,7 @@ generate_layout (ECellTextView *text_vie if (row >= 0) { gchar *temp = e_cell_text_get_text (ect, ecell_view->e_table_model, model_col, row); layout = build_layout (text_view, row, temp ? temp : "?", width); - e_cell_text_free_text (ect, temp); + e_cell_text_free_text (ect, ecell_view->e_table_model, model_col, temp); } else layout = build_layout (text_view, row, "Mumbo Jumbo", width); @@ -1143,7 +1146,7 @@ ect_enter_edit (ECellView *ecell_view, temp = e_cell_text_get_text (ect, ecell_view->e_table_model, model_col, row); edit->old_text = g_strdup (temp); - e_cell_text_free_text (ect, temp); + e_cell_text_free_text (ect, ecell_view->e_table_model, model_col, temp); edit->text = g_strdup (edit->old_text); if (edit->im_context) { @@ -1386,7 +1389,7 @@ ect_print (ECellView *ecell_view, pango_font_description_free (font_des); g_object_unref (layout); - e_cell_text_free_text (ect, string); + e_cell_text_free_text (ect, ecell_view->e_table_model, model_col, string); } static gdouble @@ -1942,6 +1945,8 @@ e_cell_text_get_text (ECellText *cell, void e_cell_text_free_text (ECellText *cell, + ETableModel *model, + gint col, gchar *text) { ECellTextClass *class; @@ -1952,7 +1957,7 @@ e_cell_text_free_text (ECellText *cell, if (class->free_text == NULL) return; - class->free_text (cell, text); + class->free_text (cell, model, col, text); } void @@ -2802,7 +2807,7 @@ e_cell_text_get_text_by_view (ECellView E_CELL_TEXT (cell_view->ecell), cell_view->e_table_model, col, row); ret = g_strdup (model_text); - e_cell_text_free_text (E_CELL_TEXT (cell_view->ecell), model_text); + e_cell_text_free_text (E_CELL_TEXT (cell_view->ecell), cell_view->e_table_model, col, model_text); } return ret; diff -up evolution-3.8.5/e-util/e-cell-text.h.evo-leaks evolution-3.8.5/e-util/e-cell-text.h --- evolution-3.8.5/e-util/e-cell-text.h.evo-leaks 2013-08-03 15:22:43.000000000 +0200 +++ evolution-3.8.5/e-util/e-cell-text.h 2014-05-13 14:51:30.904890765 +0200 @@ -107,6 +107,8 @@ struct _ECellTextClass { gint col, gint row); void (*free_text) (ECellText *cell, + ETableModel *model, + gint col, gchar *text); void (*set_value) (ECellText *cell, ETableModel *model, @@ -146,6 +148,8 @@ gchar * e_cell_text_get_text (ECellTex /* Frees the value returned by e_cell_text_get_text(). */ void e_cell_text_free_text (ECellText *cell, + ETableModel *model, + gint col, gchar *text); /* Sets the ETableModel value, based on the given string. */ diff -up evolution-3.8.5/e-util/e-file-request.c.evo-leaks evolution-3.8.5/e-util/e-file-request.c --- evolution-3.8.5/e-util/e-file-request.c.evo-leaks 2013-07-23 14:52:11.000000000 +0200 +++ evolution-3.8.5/e-util/e-file-request.c 2014-05-13 14:51:30.897890765 +0200 @@ -60,7 +60,7 @@ handle_file_request (GSimpleAsyncResult stream = g_memory_input_stream_new_from_data ( contents, length, (GDestroyNotify) g_free); - g_simple_async_result_set_op_res_gpointer (res, stream, NULL); + g_simple_async_result_set_op_res_gpointer (res, stream, g_object_unref); } } @@ -130,6 +130,8 @@ file_request_send_finish (SoupRequest *r if (!stream) /* We must always return something */ stream = g_memory_input_stream_new (); + else + g_object_ref (stream); return stream; } diff -up evolution-3.8.5/e-util/e-table-one.c.evo-leaks evolution-3.8.5/e-util/e-table-one.c --- evolution-3.8.5/e-util/e-table-one.c.evo-leaks 2013-07-23 14:52:16.000000000 +0200 +++ evolution-3.8.5/e-util/e-table-one.c 2014-05-13 14:51:30.904890765 +0200 @@ -109,6 +109,8 @@ one_free_value (ETableModel *etm, if (one->source) e_table_model_free_value (one->source, col, value); + if (one->data) + one->data[col] = one->source ? e_table_model_initialize_value (one->source, col) : NULL; } static gpointer diff -up evolution-3.8.5/e-util/e-web-view.c.evo-leaks evolution-3.8.5/e-util/e-web-view.c --- evolution-3.8.5/e-util/e-web-view.c.evo-leaks 2013-07-23 14:52:00.000000000 +0200 +++ evolution-3.8.5/e-util/e-web-view.c 2014-05-13 14:51:30.905890765 +0200 @@ -1661,6 +1661,7 @@ e_web_view_init (EWebView *web_view) settings, "changed::antialiasing", G_CALLBACK (e_web_view_update_fonts), web_view); web_view->priv->aliasing_settings = settings; + g_settings_schema_unref (settings_schema); } e_web_view_update_fonts (web_view); diff -up evolution-3.8.5/e-util/gal-a11y-e-table-item.c.evo-leaks evolution-3.8.5/e-util/gal-a11y-e-table-item.c --- evolution-3.8.5/e-util/gal-a11y-e-table-item.c.evo-leaks 2013-07-23 14:52:12.000000000 +0200 +++ evolution-3.8.5/e-util/gal-a11y-e-table-item.c 2014-05-13 14:51:30.905890765 +0200 @@ -875,9 +875,9 @@ eti_header_structure_changed (ETableHead g_return_if_fail (cols && prev_cols && n_cols > 0); /* Init to ETI_HEADER_UNCHANGED. */ - state = g_malloc0 (sizeof (gint) * n_cols); - prev_state = g_malloc0 (sizeof (gint) * prev_n_cols); - reorder = g_malloc0 (sizeof (gint) * n_cols); + state = g_malloc0 (sizeof (gint) * (MAX (prev_n_cols, n_cols) + 1)); + prev_state = g_malloc0 (sizeof (gint) * (MAX (prev_n_cols, n_cols) + 1)); + reorder = g_malloc0 (sizeof (gint) * (MAX (prev_n_cols, n_cols) + 1)); /* Compare with previously saved column headers. */ for (i = 0; i < n_cols && cols[i]; i++) { diff -up evolution-3.8.5/e-util/gal-view-instance.c.evo-leaks evolution-3.8.5/e-util/gal-view-instance.c --- evolution-3.8.5/e-util/gal-view-instance.c.evo-leaks 2013-07-23 14:52:10.000000000 +0200 +++ evolution-3.8.5/e-util/gal-view-instance.c 2014-05-13 14:51:30.905890765 +0200 @@ -271,7 +271,9 @@ load_current_view (GalViewInstance *inst } if (doc == NULL) { - instance->current_id = g_strdup (gal_view_instance_get_default_view (instance)); + gchar *view_id = g_strdup (gal_view_instance_get_default_view (instance)); + g_free (instance->current_id); + instance->current_id = view_id; if (instance->current_id) { gint index = gal_view_collection_get_view_index_by_id ( @@ -289,6 +291,7 @@ load_current_view (GalViewInstance *inst } root = xmlDocGetRootElement (doc); + g_free (instance->current_id); instance->current_id = e_xml_get_string_prop_by_name_with_default (root, (const guchar *)"current_view", NULL); if (instance->current_id != NULL) { diff -up evolution-3.8.5/mail/e-http-request.c.evo-leaks evolution-3.8.5/mail/e-http-request.c --- evolution-3.8.5/mail/e-http-request.c.evo-leaks 2013-08-01 14:12:41.000000000 +0200 +++ evolution-3.8.5/mail/e-http-request.c 2014-05-13 14:51:30.897890765 +0200 @@ -259,7 +259,7 @@ handle_http_request (GSimpleAsyncResult g_free (path); /* Set result and quit the thread */ - g_simple_async_result_set_op_res_gpointer (res, stream, NULL); + g_simple_async_result_set_op_res_gpointer (res, stream, g_object_unref); goto cleanup; } else { @@ -415,7 +415,7 @@ handle_http_request (GSimpleAsyncResult uri, request->priv->content_type, request->priv->content_length, uri_md5)); - g_simple_async_result_set_op_res_gpointer (res, stream, NULL); + g_simple_async_result_set_op_res_gpointer (res, stream, g_object_unref); goto cleanup; } @@ -526,6 +526,8 @@ http_request_send_finish (SoupRequest *r if (!stream) /* We must always return something */ stream = g_memory_input_stream_new (); + else + g_object_ref (stream); return stream; } diff -up evolution-3.8.5/mail/em-folder-tree.c.evo-leaks evolution-3.8.5/mail/em-folder-tree.c --- evolution-3.8.5/mail/em-folder-tree.c.evo-leaks 2013-07-23 14:51:50.000000000 +0200 +++ evolution-3.8.5/mail/em-folder-tree.c 2014-05-13 14:51:30.898890765 +0200 @@ -3107,6 +3107,8 @@ em_folder_tree_select_next_path (EMFolde /* TODO : Flags here for better options */ } while (skip_read_folders && unread <=0 && gtk_tree_path_compare (current_path, path)); + + gtk_tree_path_free (current_path); } if (path) { @@ -3120,6 +3122,8 @@ em_folder_tree_select_next_path (EMFolde priv->cursor_set = TRUE; } gtk_tree_view_scroll_to_cell (tree_view, path, NULL, TRUE, 0.5f, 0.0f); + + gtk_tree_path_free (path); } return; } diff -up evolution-3.8.5/mail/message-list.c.evo-leaks evolution-3.8.5/mail/message-list.c --- evolution-3.8.5/mail/message-list.c.evo-leaks 2013-08-03 15:22:43.000000000 +0200 +++ evolution-3.8.5/mail/message-list.c 2014-05-13 14:51:30.906890765 +0200 @@ -1103,6 +1103,7 @@ ml_duplicate_value (ETreeModel *etm, case COL_SENT: case COL_RECEIVED: case COL_SIZE: + case COL_FOLLOWUP_FLAG: case COL_FOLLOWUP_FLAG_STATUS: case COL_FOLLOWUP_DUE_BY: return (gpointer) value; @@ -1114,7 +1115,6 @@ ml_duplicate_value (ETreeModel *etm, case COL_RECIPIENTS: case COL_MIXED_SENDER: case COL_MIXED_RECIPIENTS: - case COL_FOLLOWUP_FLAG: case COL_LOCATION: case COL_LABELS: return g_strdup (value); @@ -1140,19 +1140,19 @@ ml_free_value (ETreeModel *etm, case COL_SENT: case COL_RECEIVED: case COL_SIZE: + case COL_FOLLOWUP_FLAG: case COL_FOLLOWUP_FLAG_STATUS: case COL_FOLLOWUP_DUE_BY: + case COL_FROM: case COL_FROM_NORM: + case COL_SUBJECT: case COL_SUBJECT_NORM: + case COL_TO: case COL_TO_NORM: case COL_SUBJECT_TRIMMED: case COL_COLOUR: break; - case COL_FROM: - case COL_SUBJECT: - case COL_TO: - case COL_FOLLOWUP_FLAG: case COL_LOCATION: case COL_SENDER: case COL_RECIPIENTS: @@ -1181,14 +1181,14 @@ ml_initialize_value (ETreeModel *etm, case COL_SENT: case COL_RECEIVED: case COL_SIZE: + case COL_FROM: + case COL_TO: + case COL_FOLLOWUP_FLAG: case COL_FOLLOWUP_FLAG_STATUS: case COL_FOLLOWUP_DUE_BY: + case COL_SUBJECT: return NULL; - case COL_FROM: - case COL_SUBJECT: - case COL_TO: - case COL_FOLLOWUP_FLAG: case COL_LOCATION: case COL_SENDER: case COL_RECIPIENTS: @@ -1401,7 +1401,7 @@ sanitize_recipients (const gchar *string gchar **name; if (!string || !*string) - return (gchar *) ""; + return g_string_free (recipients, FALSE); gstring = g_string_new (""); @@ -1765,7 +1765,7 @@ ml_tree_value_at_ex (ETreeModel *etm, return (gpointer)(res); } else - return (gpointer)(""); + return (gpointer) g_strdup (""); } case COL_LABELS:{ struct LabelsData ld; diff -up evolution-3.8.5/modules/itip-formatter/e-mail-formatter-itip.c.evo-leaks evolution-3.8.5/modules/itip-formatter/e-mail-formatter-itip.c --- evolution-3.8.5/modules/itip-formatter/e-mail-formatter-itip.c.evo-leaks 2013-07-23 14:51:41.000000000 +0200 +++ evolution-3.8.5/modules/itip-formatter/e-mail-formatter-itip.c 2014-05-13 14:51:30.898890765 +0200 @@ -100,6 +100,10 @@ emfe_itip_format (EMailFormatterExtensio folder, message_uid, "$has_cal", TRUE); } + g_clear_object (&itip_part->folder); + g_clear_object (&itip_part->msg); + g_free (itip_part->uid); + itip_part->folder = g_object_ref (folder); itip_part->uid = g_strdup (message_uid); itip_part->msg = g_object_ref (message); diff -up evolution-3.8.5/modules/itip-formatter/e-mail-parser-itip.c.evo-leaks evolution-3.8.5/modules/itip-formatter/e-mail-parser-itip.c --- evolution-3.8.5/modules/itip-formatter/e-mail-parser-itip.c.evo-leaks 2013-07-23 14:51:40.000000000 +0200 +++ evolution-3.8.5/modules/itip-formatter/e-mail-parser-itip.c 2014-05-13 14:51:30.898890765 +0200 @@ -110,6 +110,9 @@ mail_part_itip_free (EMailPart *mail_par g_free (pitip->uid); g_hash_table_destroy (pitip->real_comps); + g_clear_object (&pitip->msg); + g_clear_object (&pitip->folder); + g_clear_object (&pitip->view); } diff -up evolution-3.8.5/modules/itip-formatter/itip-view.c.evo-leaks evolution-3.8.5/modules/itip-formatter/itip-view.c --- evolution-3.8.5/modules/itip-formatter/itip-view.c.evo-leaks 2013-07-23 14:51:41.000000000 +0200 +++ evolution-3.8.5/modules/itip-formatter/itip-view.c 2014-05-13 14:51:30.899890765 +0200 @@ -5391,6 +5391,41 @@ extract_itip_data (EMailPartItip *pitip, return FALSE; } + if (pitip->comp) { + g_object_unref (pitip->comp); + pitip->comp = NULL; + } + + if (pitip->top_level) { + icalcomponent_free (pitip->top_level); + pitip->top_level = NULL; + } + + if (pitip->main_comp) { + icalcomponent_free (pitip->main_comp); + pitip->main_comp = NULL; + } + pitip->ical_comp = NULL; + + g_free (pitip->calendar_uid); + pitip->calendar_uid = NULL; + + g_free (pitip->from_address); + pitip->from_address = NULL; + g_free (pitip->from_name); + pitip->from_name = NULL; + g_free (pitip->to_address); + pitip->to_address = NULL; + g_free (pitip->to_name); + pitip->to_name = NULL; + g_free (pitip->delegator_address); + pitip->delegator_address = NULL; + g_free (pitip->delegator_name); + pitip->delegator_name = NULL; + g_free (pitip->my_address); + pitip->my_address = NULL; + g_hash_table_remove_all (pitip->real_comps); + pitip->top_level = e_cal_util_new_top_level (); pitip->main_comp = icalparser_parse_string (pitip->vcalendar); @@ -5848,6 +5883,7 @@ itip_view_init_view (ItipView *view) client_cache = e_shell_get_client_cache (shell); shell_settings = e_shell_get_shell_settings (shell); + g_clear_object (&info->client_cache); info->client_cache = g_object_ref (client_cache); /* Reset current client before initializing view */