[ATK] Leak: leaks in WebKitAccessibleInterfaceText
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 1 Jul 2013 18:04:34 +0000 (18:04 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 1 Jul 2013 18:04:34 +0000 (18:04 +0000)
https://bugs.webkit.org/show_bug.cgi?id=118248

Fixed memory leaks.

Patch by Brian Holt <brian.holt@samsung.com> on 2013-07-01
Reviewed by Christophe Dumez.

* accessibility/atk/WebKitAccessibleInterfaceText.cpp:
(getPangoLayoutForAtk):
(webkitAccessibleTextGetText):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@152232 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceText.cpp

index 12ebe55..055e997 100644 (file)
@@ -1,3 +1,16 @@
+2013-07-01  Brian Holt  <brian.holt@samsung.com>
+
+        [ATK] Leak: leaks in WebKitAccessibleInterfaceText
+        https://bugs.webkit.org/show_bug.cgi?id=118248
+
+        Fixed memory leaks.
+
+        Reviewed by Christophe Dumez.
+
+        * accessibility/atk/WebKitAccessibleInterfaceText.cpp:
+        (getPangoLayoutForAtk):
+        (webkitAccessibleTextGetText):
+
 2013-07-01  Roger Fong  <roger_fong@apple.com>
 
         Unreviewed. Make WebCore.make copy over QTMovieWin DLL's and PDB's.
index e0bc732..3da2a9e 100644 (file)
@@ -94,9 +94,10 @@ static gchar* textForRenderer(RenderObject* renderer)
             // current object is not a text object but some of its
             // children are, in order not to miss those portions of
             // text by not properly handling those situations
-            if (object->firstChild())
-                g_string_append(resultText, textForRenderer(object));
-
+            if (object->firstChild()) {
+                GOwnPtr<char> objectText(textForRenderer(object));
+                g_string_append(resultText, objectText.get());
+            }
             continue;
         }
 
@@ -187,7 +188,8 @@ static PangoLayout* getPangoLayoutForAtk(AtkText* textObject)
         return 0;
 
     // Create a string with the layout as it appears on the screen
-    PangoLayout* layout = gtk_widget_create_pango_layout(static_cast<GtkWidget*>(webView), textForObject(coreObject));
+    GOwnPtr<char> objectText(textForObject(coreObject));
+    PangoLayout* layout = gtk_widget_create_pango_layout(static_cast<GtkWidget*>(webView), objectText.get());
     return layout;
 }
 #endif
@@ -447,8 +449,8 @@ static AtkAttributeSet* getRunAttributesFromAccesibilityObject(const Accessibili
 
 static IntRect textExtents(AtkText* text, gint startOffset, gint length, AtkCoordType coords)
 {
-    gchar* textContent = webkitAccessibleTextGetText(text, startOffset, -1);
-    gint textLength = g_utf8_strlen(textContent, -1);
+    GOwnPtr<char> textContent(webkitAccessibleTextGetText(text, startOffset, -1));
+    gint textLength = g_utf8_strlen(textContent.get(), -1);
 
     // The first case (endOffset of -1) should work, but seems broken for all Gtk+ apps.
     gint rangeLength = length;
@@ -549,7 +551,8 @@ static gchar* webkitAccessibleTextGetText(AtkText* text, gint startOffset, gint
         // This can happen at least with anonymous RenderBlocks (e.g. body text amongst paragraphs)
         // In such instances, there may also be embedded objects. The object replacement character
         // is something ATs want included and we have to account for the fact that it is multibyte.
-        ret = String::fromUTF8(textForObject(coreObject));
+        GOwnPtr<char> objectText(textForObject(coreObject));
+        ret = String::fromUTF8(objectText.get());
         if (!end)
             end = ret.length();
     }