[GTK] MiniBrowser crashes when opening several urls passed as command line options
authorcarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Mar 2014 12:06:35 +0000 (12:06 +0000)
committercarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Mar 2014 12:06:35 +0000 (12:06 +0000)
https://bugs.webkit.org/show_bug.cgi?id=129738

Reviewed by Sergio Villar Senin.

The problem is that we are calling g_object_unref() for the
WebKitWebSettings everytime we set it to a WebKitWebView, but the
view only increases the reference counter when the settings is not
the same it currently has. We should release our reference once.

* MiniBrowser/gtk/main.c:
(createBrowserWindow):
(main):

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

Tools/ChangeLog
Tools/MiniBrowser/gtk/main.c

index 26d8e30..1e745c1 100644 (file)
@@ -1,3 +1,19 @@
+2014-03-06  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GTK] MiniBrowser crashes when opening several urls passed as command line options
+        https://bugs.webkit.org/show_bug.cgi?id=129738
+
+        Reviewed by Sergio Villar Senin.
+
+        The problem is that we are calling g_object_unref() for the
+        WebKitWebSettings everytime we set it to a WebKitWebView, but the
+        view only increases the reference counter when the settings is not
+        the same it currently has. We should release our reference once.
+
+        * MiniBrowser/gtk/main.c:
+        (createBrowserWindow):
+        (main):
+
 2014-03-05  Martin Robinson  <mrobinson@igalia.com>
 
         [GTK][CMake] Tarball is created with wrong tarball paths
index f69a4f6..e383fda 100644 (file)
@@ -60,10 +60,8 @@ static void createBrowserWindow(const gchar *uri, WebKitSettings *webkitSettings
     GtkWidget *mainWindow = browser_window_new(WEBKIT_WEB_VIEW(webView), NULL);
     gchar *url = argumentToURL(uri);
 
-    if (webkitSettings) {
+    if (webkitSettings)
         webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webView), webkitSettings);
-        g_object_unref(webkitSettings);
-    }
 
     browser_window_load_uri(BROWSER_WINDOW(mainWindow), url);
     g_free(url);
@@ -254,10 +252,8 @@ int main(int argc, char *argv[])
     WebKitSettings *webkitSettings = webkit_settings_new();
     webkit_settings_set_enable_developer_extras(webkitSettings, TRUE);
     webkit_settings_set_enable_webgl(webkitSettings, TRUE);
-    if (!addSettingsGroupToContext(context, webkitSettings)) {
-        g_object_unref(webkitSettings);
-        webkitSettings = 0;
-    }
+    if (!addSettingsGroupToContext(context, webkitSettings))
+        g_clear_object(&webkitSettings);
 
     GError *error = 0;
     if (!g_option_context_parse(context, &argc, &argv, &error)) {
@@ -284,6 +280,8 @@ int main(int argc, char *argv[])
     } else
         createBrowserWindow("http://www.webkitgtk.org/", webkitSettings);
 
+    g_clear_object(&webkitSettings);
+
     gtk_main();
 
     return 0;