[evolution/wip/webkit-composer: 119/372] Valgrind time



commit 77fd27cb9fc61d5e5e5d9b7c54c1afa5439c6595
Author: Dan Vrátil <dvratil redhat com>
Date:   Mon Aug 20 20:50:12 2012 +0200

    Valgrind time

 e-util/e-color-combo.c          |    2 ++
 e-util/e-editor-actions.c       |   23 ++++++++++++++---------
 e-util/e-editor-cell-dialog.c   |    7 +++++++
 e-util/e-editor-hrule-dialog.c  |   10 ++++++----
 e-util/e-editor-page-dialog.c   |    9 ++++++---
 e-util/e-editor-spell-checker.c |    4 ++++
 e-util/e-editor-table-dialog.c  |    8 ++++++--
 e-util/e-editor-widget.c        |    9 ++++++++-
 e-util/e-editor.c               |   14 +++++++++++++-
 9 files changed, 66 insertions(+), 20 deletions(-)
---
diff --git a/e-util/e-color-combo.c b/e-util/e-color-combo.c
index 400d606..f426aef 100644
--- a/e-util/e-color-combo.c
+++ b/e-util/e-color-combo.c
@@ -526,6 +526,8 @@ color_combo_dispose (GObject *object)
                priv->default_color = NULL;
        }
 
+       g_clear_object (&priv->chooser_widget);
+
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_color_combo_parent_class)->dispose (object);
 }
diff --git a/e-util/e-editor-actions.c b/e-util/e-editor-actions.c
index 11e5ad0..84254a7 100644
--- a/e-util/e-editor-actions.c
+++ b/e-util/e-editor-actions.c
@@ -618,6 +618,8 @@ action_language_cb (GtkToggleAction *action,
        gtk_action_set_sensitive (ACTION (SPELL_CHECK), length > 0);
 
        e_editor_emit_spell_languages_changed (editor);
+
+       e_editor_spell_checker_free_dict (checker, dictionary);
 }
 
 struct _ModeChanged {
@@ -1686,7 +1688,7 @@ editor_actions_setup_languages_menu (EEditor *editor)
        EEditorSpellChecker *checker;
        GtkUIManager *manager;
        GtkActionGroup *action_group;
-       const GList *available_dicts;
+       GList *available_dicts, *iter;
        guint merge_id;
 
        manager = editor->priv->manager;
@@ -1695,8 +1697,8 @@ editor_actions_setup_languages_menu (EEditor *editor)
        available_dicts = e_editor_spell_checker_get_available_dicts (checker);
        merge_id = gtk_ui_manager_new_merge_id (manager);
 
-       while (available_dicts != NULL) {
-               EnchantDict *dictionary = available_dicts->data;
+       for (iter = available_dicts; iter; iter = iter->next) {
+               EnchantDict *dictionary = iter->data;
                GtkToggleAction *action;
 
                action = gtk_toggle_action_new (
@@ -1720,8 +1722,10 @@ editor_actions_setup_languages_menu (EEditor *editor)
                        e_editor_spell_checker_get_dict_code (dictionary),
                        GTK_UI_MANAGER_AUTO, FALSE);
 
-               available_dicts = g_list_next (available_dicts);
+               e_editor_spell_checker_free_dict (checker, dictionary);
        }
+
+       g_list_free (available_dicts);
 }
 
 static void
@@ -1730,7 +1734,7 @@ editor_actions_setup_spell_check_menu (EEditor *editor)
        EEditorSpellChecker *checker;
        GtkUIManager *manager;
        GtkActionGroup *action_group;
-       const GList *available_dicts;
+       GList *available_dicts, *iter;
        guint merge_id;
 
        manager = editor->priv->manager;
@@ -1739,8 +1743,8 @@ editor_actions_setup_spell_check_menu (EEditor *editor)
        available_dicts = e_editor_spell_checker_get_available_dicts (checker);
        merge_id = gtk_ui_manager_new_merge_id (manager);
 
-       while (available_dicts != NULL) {
-               EnchantDict *dictionary = available_dicts->data;
+       for (iter = available_dicts; iter; iter = iter->next) {
+               EnchantDict *dictionary = iter->data;
                GtkAction *action;
                const gchar *code;
                const gchar *name;
@@ -1794,11 +1798,12 @@ editor_actions_setup_spell_check_menu (EEditor *editor)
                        action_name, action_name,
                        GTK_UI_MANAGER_AUTO, FALSE);
 
+               e_editor_spell_checker_free_dict (checker, dictionary);
                g_free (action_label);
                g_free (action_name);
-
-               available_dicts = g_list_next (available_dicts);
        }
+
+       g_list_free (available_dicts);
 }
 
 void
diff --git a/e-util/e-editor-cell-dialog.c b/e-util/e-editor-cell-dialog.c
index c3995d0..ba21ec5 100644
--- a/e-util/e-editor-cell-dialog.c
+++ b/e-util/e-editor-cell-dialog.c
@@ -239,6 +239,8 @@ editor_cell_dialog_set_valign (EEditorCellDialog *dialog)
 
        editor_cell_dialog_set_attribute (
                dialog, webkit_dom_html_table_cell_element_set_v_align, &val, NULL);
+
+       g_value_unset (&val);
 }
 
 static void
@@ -254,6 +256,8 @@ editor_cell_dialog_set_halign (EEditorCellDialog *dialog)
 
        editor_cell_dialog_set_attribute (
                dialog, webkit_dom_html_table_cell_element_set_align, &val, NULL);
+
+       g_value_unset (&val);
 }
 
 static void
@@ -295,6 +299,7 @@ cell_set_header_style (WebKitDOMHTMLTableCellElement *cell,
                new_cell = webkit_dom_document_create_element (document, "TD", NULL);
 
        } else {
+               g_free (tagname);
                return;
        }
 
@@ -321,6 +326,8 @@ cell_set_header_style (WebKitDOMHTMLTableCellElement *cell,
                WEBKIT_DOM_NODE (cell), NULL);
 
        dialog->priv->cell = new_cell;
+
+       g_free (tagname);
 }
 
 static void
diff --git a/e-util/e-editor-hrule-dialog.c b/e-util/e-editor-hrule-dialog.c
index 110b033..0f2134f 100644
--- a/e-util/e-editor-hrule-dialog.c
+++ b/e-util/e-editor-hrule-dialog.c
@@ -50,7 +50,7 @@ editor_hrule_dialog_set_alignment (EEditorHRuleDialog *dialog)
 
        g_return_if_fail (WEBKIT_DOM_IS_HTMLHR_ELEMENT (dialog->priv->hr_element));
 
-       alignment = gtk_combo_box_text_get_active_text (
+       alignment = gtk_combo_box_get_active_id (
                        GTK_COMBO_BOX_TEXT (dialog->priv->alignment_combo));
 
        webkit_dom_htmlhr_element_set_align (dialog->priv->hr_element, alignment);
@@ -113,19 +113,21 @@ editor_hrule_dialog_get_size (EEditorHRuleDialog *dialog)
 static void
 editor_hrule_dialog_set_width (EEditorHRuleDialog *dialog)
 {
-       gchar *width;
+       gchar *width, *units;
 
        g_return_if_fail (WEBKIT_DOM_IS_HTMLHR_ELEMENT (dialog->priv->hr_element));
 
+       units = gtk_combo_box_text_get_active_text (
+                       GTK_COMBO_BOX_TEXT (dialog->priv->unit_combo));
        width = g_strdup_printf (
                "%d%s",
                (gint) gtk_spin_button_get_value (
                        GTK_SPIN_BUTTON (dialog->priv->width_edit)),
-               gtk_combo_box_text_get_active_text (
-                       GTK_COMBO_BOX_TEXT (dialog->priv->unit_combo)));
+               units);
 
        webkit_dom_htmlhr_element_set_width (dialog->priv->hr_element, width);
 
+       g_free (units);
        g_free (width);
 }
 
diff --git a/e-util/e-editor-page-dialog.c b/e-util/e-editor-page-dialog.c
index 3327361..6976172 100644
--- a/e-util/e-editor-page-dialog.c
+++ b/e-util/e-editor-page-dialog.c
@@ -268,6 +268,8 @@ editor_page_dialog_set_background_image (EEditorPageDialog *dialog)
 
        webkit_dom_html_body_element_set_background (
                (WebKitDOMHTMLBodyElement *) body, uri ? uri : "");
+
+       g_free (uri);
 }
 
 static void
@@ -308,6 +310,7 @@ editor_page_dialog_show (GtkWidget *widget)
                gtk_combo_box_set_active (
                        GTK_COMBO_BOX (dialog->priv->background_template_combo), 0);
        }
+       g_free (tmp);
 
        tmp = webkit_dom_html_body_element_get_text (
                        (WebKitDOMHTMLBodyElement *) body);
@@ -322,8 +325,8 @@ editor_page_dialog_show (GtkWidget *widget)
                rgba.blue = ((gdouble) color->blue) / G_MAXUINT16;
        } else {
                gdk_rgba_parse (&rgba, tmp);
-               g_free (tmp);
        }
+       g_free (tmp);
        e_color_combo_set_current_color (
                E_COLOR_COMBO (dialog->priv->text_color_picker), &rgba);
 
@@ -340,8 +343,8 @@ editor_page_dialog_show (GtkWidget *widget)
                rgba.blue = ((gdouble) color.blue) / G_MAXUINT16;
        } else {
                gdk_rgba_parse (&rgba, tmp);
-               g_free (tmp);
        }
+       g_free (tmp);
        e_color_combo_set_current_color (
                E_COLOR_COMBO (dialog->priv->link_color_picker), &rgba);
 
@@ -359,8 +362,8 @@ editor_page_dialog_show (GtkWidget *widget)
 
        } else {
                gdk_rgba_parse (&rgba, tmp);
-               g_free (tmp);
        }
+       g_free (tmp);
        e_color_combo_set_current_color (
                E_COLOR_COMBO (dialog->priv->background_color_picker), &rgba);
 
diff --git a/e-util/e-editor-spell-checker.c b/e-util/e-editor-spell-checker.c
index b7c100f..143a501 100644
--- a/e-util/e-editor-spell-checker.c
+++ b/e-util/e-editor-spell-checker.c
@@ -457,8 +457,12 @@ check_spelling_of_string (WebKitSpellChecker *webkit_checker,
                                        break;
                                }
                        }
+
+                       g_free (new_word);
                }
        }
+
+       g_free (attrs);
 }
 
 static gchar **
diff --git a/e-util/e-editor-table-dialog.c b/e-util/e-editor-table-dialog.c
index a3a8a71..446f4e0 100644
--- a/e-util/e-editor-table-dialog.c
+++ b/e-util/e-editor-table-dialog.c
@@ -201,13 +201,16 @@ editor_table_dialog_set_width (EEditorTableDialog *dialog)
 
        if (gtk_toggle_button_get_active (
                        GTK_TOGGLE_BUTTON (dialog->priv->width_check))) {
+               gchar *units;
 
+               units = gtk_combo_box_text_get_active_text (
+                               GTK_COMBO_BOX_TEXT (dialog->priv->width_units));
                width = g_strdup_printf (
                        "%d%s",
                        gtk_spin_button_get_value_as_int (
                                GTK_SPIN_BUTTON (dialog->priv->width_edit)),
-                       gtk_combo_box_text_get_active_text (
-                               GTK_COMBO_BOX_TEXT (dialog->priv->width_units)));
+                       units);
+               g_free (units);
 
                gtk_widget_set_sensitive (dialog->priv->width_edit, TRUE);
                gtk_widget_set_sensitive (dialog->priv->width_units, TRUE);
@@ -248,6 +251,7 @@ editor_table_dialog_get_width (EEditorTableDialog *dialog)
                        ((strstr (width, "%") == NULL) ?
                                "units-px" : "units-percent"));
        }
+       g_free (width);
 }
 
 static void
diff --git a/e-util/e-editor-widget.c b/e-util/e-editor-widget.c
index 2712423..7d5a39a 100644
--- a/e-util/e-editor-widget.c
+++ b/e-util/e-editor-widget.c
@@ -291,8 +291,10 @@ editor_widget_check_magic_smileys (EEditorWidget *widget,
 
                if (pos > 0) {
                        uc = g_utf8_get_char (g_utf8_offset_to_pointer (node_text, pos - 1));
-                       if (uc != ' ' && uc != '\t')
+                       if (uc != ' ' && uc != '\t') {
+                               g_free (node_text);
                                return;
+                       }
                }
 
                /* Select the text-smiley and replace it by <img> */
@@ -319,6 +321,8 @@ editor_widget_check_magic_smileys (EEditorWidget *widget,
                g_free (filename_uri);
                gtk_icon_info_free (icon_info);
        }
+
+       g_free (node_text);
 }
 
 static void
@@ -410,6 +414,8 @@ editor_widget_button_release_event (GtkWidget *gtk_widget,
                "link-uri", &uri,
                NULL);
 
+       g_object_unref (hit_test);
+
        /* Left click on a link */
        if ((context & WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK) &&
            (event->button == 1)) {
@@ -761,6 +767,7 @@ e_editor_widget_init (EEditorWidget *editor)
        /* Override the spell-checker, use our own */
        checker = g_object_new (E_TYPE_EDITOR_SPELL_CHECKER, NULL);
        webkit_set_text_checker (G_OBJECT (checker));
+       g_object_unref (checker);
 
        /* Don't use CSS when possible to preserve compatibility with older
         * versions of Evolution or other MUAs */
diff --git a/e-util/e-editor.c b/e-util/e-editor.c
index 4db0e09..92916ad 100644
--- a/e-util/e-editor.c
+++ b/e-util/e-editor.c
@@ -308,6 +308,7 @@ editor_update_actions (EEditor *editor,
                G_OBJECT (hit_test),
                "context", &context,
                "inner-node", &node, NULL);
+       g_object_unref (hit_test);
 
        visible = (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE);
        gtk_action_set_visible (ACTION (CONTEXT_PROPERTIES_IMAGE), visible);
@@ -686,13 +687,19 @@ editor_constructed (GObject *object)
 }
 
 static void
+free_dict (gpointer dict,
+          gpointer checker)
+{
+       e_editor_spell_checker_free_dict (checker, dict);
+}
+
+static void
 editor_dispose (GObject *object)
 {
        EEditor *editor = E_EDITOR (object);
        EEditorPrivate *priv = editor->priv;
 
        g_clear_object (&priv->manager);
-       g_clear_object (&priv->manager);
        g_clear_object (&priv->core_actions);
        g_clear_object (&priv->html_actions);
        g_clear_object (&priv->context_actions);
@@ -701,6 +708,9 @@ editor_dispose (GObject *object)
        g_clear_object (&priv->spell_check_actions);
        g_clear_object (&priv->suggestion_actions);
 
+       g_list_foreach (
+               priv->active_dictionaries, free_dict,
+               webkit_get_text_checker());
        g_list_free (priv->active_dictionaries);
        priv->active_dictionaries = NULL;
 
@@ -715,6 +725,8 @@ editor_dispose (GObject *object)
        g_clear_object (&priv->size_combo_box);
        g_clear_object (&priv->style_combo_box);
        g_clear_object (&priv->scrolled_window);
+
+       g_clear_object (&priv->editor_widget);
 }
 
 static void


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