[evolution/wip/webkit2] Fix couple of more leaks of WebKitDOM objects



commit 34a50fe8de3c12d5be8bafffaf4d08b936f2f168
Author: Tomas Popela <tpopela redhat com>
Date:   Mon Aug 1 09:50:51 2016 +0200

    Fix couple of more leaks of WebKitDOM objects

 .../web-extension/e-editor-dom-functions.c         |   19 +++--
 .../web-extension/e-editor-undo-redo-manager.c     |    8 +-
 web-extensions/e-dom-utils.c                       |   79 ++++++++++----------
 web-extensions/e-web-extension.c                   |   11 ++-
 4 files changed, 61 insertions(+), 56 deletions(-)
---
diff --git a/modules/webkit-editor/web-extension/e-editor-dom-functions.c 
b/modules/webkit-editor/web-extension/e-editor-dom-functions.c
index 71198af..2c88de1 100644
--- a/modules/webkit-editor/web-extension/e-editor-dom-functions.c
+++ b/modules/webkit-editor/web-extension/e-editor-dom-functions.c
@@ -3559,7 +3559,7 @@ e_editor_dom_body_input_event_process (EEditorPage *editor_page,
        if (do_spell_check)
                e_editor_dom_force_spell_check_for_current_paragraph (editor_page);
 
-       g_object_unref (range);
+       g_clear_object (&range);
 }
 
 static void
@@ -12713,13 +12713,13 @@ e_editor_dom_selection_save (EEditorPage *editor_page)
        g_clear_object (&dom_window);
 
        if (webkit_dom_dom_selection_get_range_count (dom_selection) < 1) {
-               g_object_unref (dom_selection);
+               g_clear_object (&dom_selection);
                return;
        }
 
        range = webkit_dom_dom_selection_get_range_at (dom_selection, 0, NULL);
        if (!range) {
-               g_object_unref (dom_selection);
+               g_clear_object (&dom_selection);
                return;
        }
 
@@ -15447,7 +15447,7 @@ e_editor_dom_selection_set_monospace (EEditorPage *editor_page,
                        tt_element = dom_node_find_parent_element (node, "FONT");
 
                        if (!is_monospace_element (tt_element)) {
-                               g_object_unref (range);
+                               g_clear_object (&range);
                                g_free (ev);
                                return;
                        }
@@ -15492,7 +15492,7 @@ e_editor_dom_selection_set_monospace (EEditorPage *editor_page,
 
        e_editor_dom_force_spell_check_for_current_paragraph (editor_page);
 
-       g_object_unref (range);
+       g_clear_object (&range);
 }
 
 static gboolean
@@ -17368,18 +17368,19 @@ gchar *
 e_editor_dom_get_caret_word (EEditorPage *editor_page)
 {
        gchar *word;
-       WebKitDOMRange *range = NULL;
+       WebKitDOMRange *range = NULL, *range_clone = NULL;
 
        g_return_val_if_fail (E_IS_EDITOR_PAGE (editor_page), NULL);
 
        range = e_editor_dom_get_current_range (editor_page);
 
        /* Don't operate on the visible selection */
-       range = webkit_dom_range_clone_range (range, NULL);
-       webkit_dom_range_expand (range, "word", NULL);
-       word = webkit_dom_range_to_string (range, NULL);
+       range_clone = webkit_dom_range_clone_range (range, NULL);
+       webkit_dom_range_expand (range_clone, "word", NULL);
+       word = webkit_dom_range_to_string (range_clone, NULL);
 
        g_clear_object (&range);
+       g_clear_object (&range_clone);
 
        return word;
 }
diff --git a/modules/webkit-editor/web-extension/e-editor-undo-redo-manager.c 
b/modules/webkit-editor/web-extension/e-editor-undo-redo-manager.c
index 4fbbe13..9f2ef7b 100644
--- a/modules/webkit-editor/web-extension/e-editor-undo-redo-manager.c
+++ b/modules/webkit-editor/web-extension/e-editor-undo-redo-manager.c
@@ -96,7 +96,7 @@ get_range_for_point (WebKitDOMDocument *document,
 
        /* The point is outside the viewport, scroll to it. */
        if (!range) {
-               WebKitDOMDOMWindow *dom_window;
+               WebKitDOMDOMWindow *dom_window = NULL;
 
                dom_window = webkit_dom_document_get_default_view (document);
                webkit_dom_dom_window_scroll_to (dom_window, point.x, point.y);
@@ -105,7 +105,7 @@ get_range_for_point (WebKitDOMDocument *document,
                scroll_top = webkit_dom_element_get_scroll_top (WEBKIT_DOM_ELEMENT (body));
                range = webkit_dom_document_caret_range_from_point (
                        document, point.x - scroll_left, point.y - scroll_top);
-               g_object_unref (dom_window);
+               g_clear_object (&dom_window);
        }
 
        return range;
@@ -663,7 +663,7 @@ undo_delete (EEditorPage *editor_page,
 
                                e_editor_dom_force_spell_check_in_viewport (editor_page);
 
-                               g_object_unref (dom_selection);
+                               g_clear_object (&dom_selection);
 
                                return;
                        } else if (!next_sibling && !webkit_dom_node_is_same_node (parent_node, 
current_block))
@@ -880,7 +880,7 @@ undo_delete (EEditorPage *editor_page,
                e_editor_dom_force_spell_check_for_current_paragraph (editor_page);
        }
 
-       g_object_unref (dom_selection);
+       g_clear_object (&dom_selection);
 }
 
 static void
diff --git a/web-extensions/e-dom-utils.c b/web-extensions/e-dom-utils.c
index 460b569..24704ea 100644
--- a/web-extensions/e-dom-utils.c
+++ b/web-extensions/e-dom-utils.c
@@ -36,7 +36,7 @@ void
 e_dom_utils_replace_local_image_links (WebKitDOMDocument *document)
 {
        gint ii, length;
-       WebKitDOMNodeList *list;
+       WebKitDOMNodeList *list = NULL;
 
        list = webkit_dom_document_query_selector_all (
                document, "img[src^=\"file://\"]", NULL);
@@ -58,7 +58,7 @@ e_dom_utils_replace_local_image_links (WebKitDOMDocument *document)
                g_free (src);
                g_object_unref (img);
        }
-       g_object_unref (list);
+       g_clear_object (&list);
 
        list = webkit_dom_document_query_selector_all (
                document, "iframe", NULL);
@@ -77,7 +77,7 @@ e_dom_utils_replace_local_image_links (WebKitDOMDocument *document)
                        e_dom_utils_replace_local_image_links (content_document);
                g_object_unref (iframe);
        }
-       g_object_unref (list);
+       g_clear_object (&list);
 }
 
 gboolean
@@ -107,7 +107,7 @@ e_dom_utils_document_has_selection (WebKitDOMDocument *document)
        g_clear_object (&dom_selection);
 
        if (!ret_val) {
-               WebKitDOMHTMLCollection *frames;
+               WebKitDOMHTMLCollection *frames = NULL;
                gulong ii, length;
 
                frames = webkit_dom_document_get_elements_by_tag_name_as_html_collection (document, "iframe");
@@ -128,7 +128,7 @@ e_dom_utils_document_has_selection (WebKitDOMDocument *document)
                        g_object_unref (node);
                }
 
-               g_object_unref (frames);
+               g_clear_object (&frames);
        }
 
        return ret_val;
@@ -170,9 +170,9 @@ static gchar *
 get_frame_selection_html (WebKitDOMElement *iframe)
 {
        WebKitDOMDocument *content_document;
-       WebKitDOMDOMWindow *dom_window;
-       WebKitDOMDOMSelection *dom_selection;
-       WebKitDOMHTMLCollection *frames;
+       WebKitDOMDOMWindow *dom_window = NULL;
+       WebKitDOMDOMSelection *dom_selection = NULL;
+       WebKitDOMHTMLCollection *frames = NULL;
        gulong ii, length;
 
        content_document = webkit_dom_html_iframe_element_get_content_document (
@@ -183,9 +183,9 @@ get_frame_selection_html (WebKitDOMElement *iframe)
 
        dom_window = webkit_dom_document_get_default_view (content_document);
        dom_selection = webkit_dom_dom_window_get_selection (dom_window);
-       g_object_unref (dom_window);
+       g_clear_object (&dom_window);
        if (dom_selection && (webkit_dom_dom_selection_get_range_count (dom_selection) > 0)) {
-               WebKitDOMRange *range;
+               WebKitDOMRange *range = NULL;
                WebKitDOMElement *element;
                WebKitDOMDocumentFragment *fragment;
 
@@ -212,13 +212,13 @@ get_frame_selection_html (WebKitDOMElement *iframe)
                                g_free (tmp);
                        }
 
-                       g_object_unref (range);
-                       g_object_unref (dom_selection);
+                       g_clear_object (&range);
+                       g_clear_object (&dom_selection);
                        return inner_html;
                }
        }
 
-       g_object_unref (dom_selection);
+       g_clear_object (&dom_selection);
 
        frames = webkit_dom_document_get_elements_by_tag_name_as_html_collection (content_document, "iframe");
        length = webkit_dom_html_collection_get_length (frames);
@@ -233,12 +233,12 @@ get_frame_selection_html (WebKitDOMElement *iframe)
 
                g_object_unref (node);
                if (text != NULL) {
-                       g_object_unref (frames);
+                       g_clear_object (&frames);
                        return text;
                }
        }
 
-       g_object_unref (frames);
+       g_clear_object (&frames);
 
        return NULL;
 }
@@ -246,7 +246,7 @@ get_frame_selection_html (WebKitDOMElement *iframe)
 gchar *
 e_dom_utils_get_selection_content_html (WebKitDOMDocument *document)
 {
-       WebKitDOMHTMLCollection *frames;
+       WebKitDOMHTMLCollection *frames = NULL;
        gulong ii, length;
 
        if (!e_dom_utils_document_has_selection (document))
@@ -266,12 +266,12 @@ e_dom_utils_get_selection_content_html (WebKitDOMDocument *document)
 
                g_object_unref (node);
                if (text != NULL) {
-                       g_object_unref (frames);
+                       g_clear_object (&frames);
                        return text;
                }
        }
 
-       g_object_unref (frames);
+       g_clear_object (&frames);
        return NULL;
 }
 
@@ -279,9 +279,9 @@ static gchar *
 get_frame_selection_content_text (WebKitDOMElement *iframe)
 {
        WebKitDOMDocument *content_document;
-       WebKitDOMDOMWindow *window;
-       WebKitDOMDOMSelection *selection;
-       WebKitDOMHTMLCollection *frames;
+       WebKitDOMDOMWindow *dom_window = NULL;
+       WebKitDOMDOMSelection *dom_selection = NULL;
+       WebKitDOMHTMLCollection *frames = NULL;
        gulong ii, length;
 
        content_document = webkit_dom_html_iframe_element_get_content_document (
@@ -290,18 +290,21 @@ get_frame_selection_content_text (WebKitDOMElement *iframe)
        if (!content_document)
                return NULL;
 
-       window = webkit_dom_document_get_default_view (content_document);
-       selection = webkit_dom_dom_window_get_selection (window);
-       if (selection && (webkit_dom_dom_selection_get_range_count (selection) > 0)) {
+       dom_window = webkit_dom_document_get_default_view (content_document);
+       dom_selection = webkit_dom_dom_window_get_selection (dom_window);
+       g_clear_object (&dom_window);
+       if (dom_selection && (webkit_dom_dom_selection_get_range_count (dom_selection) > 0)) {
                WebKitDOMRange *range = NULL;
                gchar *text = NULL;
 
-               range = webkit_dom_dom_selection_get_range_at (selection, 0, NULL);
+               range = webkit_dom_dom_selection_get_range_at (dom_selection, 0, NULL);
                if (range)
                        text = webkit_dom_range_to_string (range, NULL);
                g_clear_object (&range);
+               g_clear_object (&dom_selection);
                return text;
        }
+       g_clear_object (&dom_selection);
 
        frames = webkit_dom_document_get_elements_by_tag_name_as_html_collection (content_document, "iframe");
        length = webkit_dom_html_collection_get_length (frames);
@@ -316,19 +319,19 @@ get_frame_selection_content_text (WebKitDOMElement *iframe)
 
                g_object_unref (node);
                if (text != NULL) {
-                       g_object_unref (frames);
+                       g_clear_object (&frames);
                        return text;
                }
        }
 
-       g_object_unref (frames);
+       g_clear_object (&frames);
        return NULL;
 }
 
 gchar *
 e_dom_utils_get_selection_content_text (WebKitDOMDocument *document)
 {
-       WebKitDOMHTMLCollection *frames;
+       WebKitDOMHTMLCollection *frames = NULL;
        gulong ii, length;
 
        frames = webkit_dom_document_get_elements_by_tag_name_as_html_collection (document, "iframe");
@@ -345,12 +348,12 @@ e_dom_utils_get_selection_content_text (WebKitDOMDocument *document)
 
                g_object_unref (node);
                if (text != NULL) {
-                       g_object_unref (frames);
+                       g_clear_object (&frames);
                        return text;
                }
        }
 
-       g_object_unref (frames);
+       g_clear_object (&frames);
        return NULL;
 }
 
@@ -402,8 +405,8 @@ add_css_rule_into_style_sheet (WebKitDOMDocument *document,
                                const gchar *style)
 {
        WebKitDOMElement *style_element;
-       WebKitDOMStyleSheet *sheet;
-       WebKitDOMCSSRuleList *rules_list;
+       WebKitDOMStyleSheet *sheet = NULL;
+       WebKitDOMCSSRuleList *rules_list = NULL;
        gint length, ii, selector_length;
        gboolean removed = FALSE;
 
@@ -449,13 +452,13 @@ add_css_rule_into_style_sheet (WebKitDOMDocument *document,
                g_object_unref (rule);
        }
 
-       g_object_unref (rules_list);
+       g_clear_object (&rules_list);
 
        /* Insert the rule at the end, so it will override previously inserted */
        webkit_dom_css_style_sheet_add_rule (
                WEBKIT_DOM_CSS_STYLE_SHEET (sheet), selector, style, length, NULL);
 
-       g_object_unref (sheet);
+       g_clear_object (&sheet);
        g_object_unref (style_element);
 }
 
@@ -465,7 +468,7 @@ add_css_rule_into_style_sheet_recursive (WebKitDOMDocument *document,
                                          const gchar *selector,
                                          const gchar *style)
 {
-       WebKitDOMHTMLCollection *frames;
+       WebKitDOMHTMLCollection *frames = NULL;
        gint ii, length;
 
        /* Add rule to document */
@@ -498,7 +501,7 @@ add_css_rule_into_style_sheet_recursive (WebKitDOMDocument *document,
                        style);
                g_object_unref (node);
        }
-       g_object_unref (frames);
+       g_clear_object (&frames);
 }
 
 void
@@ -1865,7 +1868,7 @@ merge_lists_if_possible (WebKitDOMNode *list)
        EContentEditorBlockFormat format, prev, next;
        gint ii, length;
        WebKitDOMNode *prev_sibling, *next_sibling;
-       WebKitDOMNodeList *lists;
+       WebKitDOMNodeList *lists = NULL;
 
        prev_sibling = webkit_dom_node_get_previous_sibling (WEBKIT_DOM_NODE (list));
        next_sibling = webkit_dom_node_get_next_sibling (WEBKIT_DOM_NODE (list));
@@ -1892,7 +1895,7 @@ merge_lists_if_possible (WebKitDOMNode *list)
                merge_lists_if_possible (node);
                g_object_unref (node);
        }
-       g_object_unref (lists);
+       g_clear_object (&lists);
 }
 
 WebKitDOMElement *
diff --git a/web-extensions/e-web-extension.c b/web-extensions/e-web-extension.c
index 97524e9..0492077 100644
--- a/web-extensions/e-web-extension.c
+++ b/web-extensions/e-web-extension.c
@@ -196,7 +196,7 @@ element_clicked_cb (WebKitDOMElement *element,
 {
        EWebExtension *extension = user_data;
        WebKitDOMElement *offset_parent;
-       WebKitDOMDOMWindow *dom_window;
+       WebKitDOMDOMWindow *dom_window = NULL;
        gchar *attr_class, *attr_value;
        const guint64 *ppage_id;
        gdouble with_parents_left, with_parents_top;
@@ -258,7 +258,7 @@ web_extension_register_element_clicked_in_document (EWebExtension *extension,
                                                    WebKitDOMDocument *document,
                                                    const gchar *element_class)
 {
-       WebKitDOMHTMLCollection *collection;
+       WebKitDOMHTMLCollection *collection = NULL;
        gulong ii, len;
 
        g_return_if_fail (E_IS_WEB_EXTENSION (extension));
@@ -729,14 +729,15 @@ handle_method_call (GDBusConnection *connection,
                iframe_document = e_dom_utils_find_document_with_uri (document, document_uri);
 
                if (iframe_document) {
-                       WebKitDOMDOMWindow *window;
+                       WebKitDOMDOMWindow *dom_window;
                        WebKitDOMElement *frame_element;
 
                        /* Get frame's window and from the window the actual <iframe> element */
-                       window = webkit_dom_document_get_default_view (iframe_document);
-                       frame_element = webkit_dom_dom_window_get_frame_element (window);
+                       dom_window = webkit_dom_document_get_default_view (iframe_document);
+                       frame_element = webkit_dom_dom_window_get_frame_element (dom_window);
                        webkit_dom_html_iframe_element_set_src (
                                WEBKIT_DOM_HTML_IFRAME_ELEMENT (frame_element), new_iframe_src);
+                       g_clear_object (&dom_window);
                }
 
                g_dbus_method_invocation_return_value (invocation, NULL);


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