[GTK] [WK2] Memory leak in PluginProcessProxy::scanPlugin
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 11 May 2012 23:08:16 +0000 (23:08 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 11 May 2012 23:08:16 +0000 (23:08 +0000)
https://bugs.webkit.org/show_bug.cgi?id=86240

Patch by Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> on 2012-05-11
Reviewed by Martin Robinson.

Free the output received from the g_spawn_sync().

* UIProcess/Plugins/gtk/PluginProcessProxyGtk.cpp:
(WebKit::PluginProcessProxy::scanPlugin):

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

Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/Plugins/gtk/PluginProcessProxyGtk.cpp

index 586457b..d843e41 100644 (file)
@@ -1,3 +1,15 @@
+2012-05-11  Sudarsana Nagineni  <sudarsana.nagineni@linux.intel.com>
+
+        [GTK] [WK2] Memory leak in PluginProcessProxy::scanPlugin
+        https://bugs.webkit.org/show_bug.cgi?id=86240
+
+        Reviewed by Martin Robinson.
+
+        Free the output received from the g_spawn_sync().
+
+        * UIProcess/Plugins/gtk/PluginProcessProxyGtk.cpp:
+        (WebKit::PluginProcessProxy::scanPlugin):
+
 2012-05-11  Andreas Kling  <kling@webkit.org>
 
         WK2/Plugins: Move enumeration of plugins to a secondary UIProcess thread.
index 653c729..fa9339d 100644 (file)
@@ -31,6 +31,7 @@
 #include "PluginProcessCreationParameters.h"
 #include "ProcessExecutablePath.h"
 #include <WebCore/FileSystem.h>
+#include <WebCore/GOwnPtrGtk.h>
 #include <glib.h>
 #include <wtf/text/CString.h>
 #include <wtf/text/WTFString.h>
@@ -54,8 +55,8 @@ bool PluginProcessProxy::scanPlugin(const String& pluginPath, RawPluginMetaData&
     argv[3] = 0;
 
     gint status;
-    gchar* stdOut;
-    if (!g_spawn_sync(0, argv, 0, G_SPAWN_STDERR_TO_DEV_NULL, 0, 0, &stdOut, 0, &status, 0))
+    GOwnPtr<gchar> stdOut;
+    if (!g_spawn_sync(0, argv, 0, G_SPAWN_STDERR_TO_DEV_NULL, 0, 0, &stdOut.outPtr(), 0, &status, 0))
         return false;
     if (!WIFEXITED(status) || WEXITSTATUS(status) != EXIT_SUCCESS)
         return false;
@@ -63,7 +64,7 @@ bool PluginProcessProxy::scanPlugin(const String& pluginPath, RawPluginMetaData&
     const unsigned kNumLinesExpected = 3;
     String lines[kNumLinesExpected];
     unsigned lineIndex = 0;
-    const UChar* current = reinterpret_cast<const UChar*>(stdOut);
+    const UChar* current = reinterpret_cast<const UChar*>(stdOut.get());
     while (lineIndex < kNumLinesExpected) {
         const UChar* start = current;
         while (*current++ != UChar('\n')) { }