[evolution/wip/webkit2] ExternalEditor - Fix leaks of WebKit objects



commit 37cecbacd72111e887e240b4977249f6ab51a05b
Author: Tomas Popela <tpopela redhat com>
Date:   Thu Feb 25 15:30:59 2016 +0100

    ExternalEditor - Fix leaks of WebKit objects

 .../composer/e-html-editor-view-dom-functions.c    |   29 +++++++++++++-------
 1 files changed, 19 insertions(+), 10 deletions(-)
---
diff --git a/web-extensions/composer/e-html-editor-view-dom-functions.c 
b/web-extensions/composer/e-html-editor-view-dom-functions.c
index f59bb49..e463edd 100644
--- a/web-extensions/composer/e-html-editor-view-dom-functions.c
+++ b/web-extensions/composer/e-html-editor-view-dom-functions.c
@@ -8067,32 +8067,35 @@ dom_process_content_after_mode_change (WebKitDOMDocument *document,
 gint
 dom_get_caret_position (WebKitDOMDocument *document)
 {
-       WebKitDOMDOMWindow *window;
-       WebKitDOMDOMSelection *selection;
+       WebKitDOMDOMWindow *dom_window;
+       WebKitDOMDOMSelection *dom_selection;
        WebKitDOMRange *range;
-       gint range_count;
+       gint range_count, ret_val;
        WebKitDOMNodeList *nodes;
        gulong ii, length;
 
-       window = webkit_dom_document_get_default_view (document);
-       selection = webkit_dom_dom_window_get_selection (window);
+       dom_window = webkit_dom_document_get_default_view (document);
+       dom_selection = webkit_dom_dom_window_get_selection (dom_window);
+       g_object_unref (dom_window);
 
-       if (webkit_dom_dom_selection_get_range_count (selection) < 1)
+       if (webkit_dom_dom_selection_get_range_count (dom_selection) < 1) {
+               g_object_unref (dom_selection);
                return 0;
+       }
 
-       range = webkit_dom_dom_selection_get_range_at (selection, 0, NULL);
+       range = webkit_dom_dom_selection_get_range_at (dom_selection, 0, NULL);
        range_count = 0;
        nodes = webkit_dom_node_get_child_nodes (
                webkit_dom_node_get_parent_node (
                        webkit_dom_dom_selection_get_anchor_node (
-                               selection)));
+                               dom_selection)));
        length = webkit_dom_node_list_get_length (nodes);
        for (ii = 0; ii < length; ii++) {
                WebKitDOMNode *node;
 
                node = webkit_dom_node_list_item (nodes, ii);
                if (webkit_dom_node_is_same_node (
-                       node, webkit_dom_dom_selection_get_anchor_node (selection))) {
+                       node, webkit_dom_dom_selection_get_anchor_node (dom_selection))) {
 
                        g_object_unref (node);
                        break;
@@ -8105,7 +8108,13 @@ dom_get_caret_position (WebKitDOMDocument *document)
        }
 
        g_object_unref (nodes);
-       return webkit_dom_range_get_start_offset (range, NULL) + range_count;
+
+       ret_val = webkit_dom_range_get_start_offset (range, NULL) + range_count;
+
+       g_object_unref (range);
+       g_object_unref (dom_selection);
+
+       return ret_val;
 }
 
 void


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