diff options
author | Christian Dywan <christian.dywan@canonical.com> | 2013-07-29 19:41:17 +0200 |
---|---|---|
committer | Christian Dywan <christian.dywan@canonical.com> | 2013-07-29 19:41:17 +0200 |
commit | 9552163597c566def86166fea17f31b864d55b23 (patch) | |
tree | df1a1fa0f752da5ca6ec42f3031d1fa3566b332c /midori/midori-websettings.c | |
parent | 5e93faa8b5db9750244246e3b89411cee8a44667 (diff) | |
download | midori-9552163597c566def86166fea17f31b864d55b23.tar.gz |
Handle NULL app properly in midori_settings_save_to_file
Diffstat (limited to 'midori/midori-websettings.c')
-rw-r--r-- | midori/midori-websettings.c | 54 |
1 files changed, 29 insertions, 25 deletions
diff --git a/midori/midori-websettings.c b/midori/midori-websettings.c index 46644360..0ed1e8c8 100644 --- a/midori/midori-websettings.c +++ b/midori/midori-websettings.c @@ -1483,9 +1483,6 @@ midori_settings_save_to_file (MidoriWebSettings* settings, GType type; const gchar* property; gboolean saved; - KatzeArray* extensions = katze_object_get_object (app, "extensions"); - MidoriExtension* extension; - gchar** _extensions; key_file = g_key_file_new (); class = G_OBJECT_GET_CLASS (settings); @@ -1573,30 +1570,37 @@ midori_settings_save_to_file (MidoriWebSettings* settings, } g_free (pspecs); - /* Take frozen list of active extensions until preferences reset it */ - if ((_extensions = g_object_get_data (G_OBJECT (app), "extensions"))) + if (app != NULL) { - i = 0; - while (_extensions[i]) - g_key_file_set_boolean (key_file, "extensions", _extensions[i++], TRUE); - } - else if (extensions) - { - KATZE_ARRAY_FOREACH_ITEM (extension, extensions) - if (midori_extension_is_active (extension)) - { - const gchar* filename = g_object_get_data (G_OBJECT (extension), "filename"); - g_return_val_if_fail (filename != NULL, FALSE); - if (filename && strchr (filename, '/')) - g_warning ("%s: %s unexpected /", G_STRFUNC, filename); - gchar* key = katze_object_get_string (extension, "key"); - gchar* subname = key ? g_strdup_printf ("%s/%s", filename, key) : g_strdup (filename); - g_key_file_set_boolean (key_file, "extensions", subname, TRUE); - g_free (key); - g_free (subname); - } - g_object_unref (extensions); + /* Take frozen list of active extensions until preferences reset it */ + gchar** _extensions; + KatzeArray* extensions; + if ((_extensions = g_object_get_data (G_OBJECT (app), "extensions"))) + { + i = 0; + while (_extensions[i]) + g_key_file_set_boolean (key_file, "extensions", _extensions[i++], TRUE); + } + else if ((extensions = katze_object_get_object (app, "extensions"))) + { + MidoriExtension* extension; + KATZE_ARRAY_FOREACH_ITEM (extension, extensions) + if (midori_extension_is_active (extension)) + { + const gchar* filename = g_object_get_data (G_OBJECT (extension), "filename"); + g_return_val_if_fail (filename != NULL, FALSE); + if (filename && strchr (filename, '/')) + g_warning ("%s: %s unexpected /", G_STRFUNC, filename); + gchar* key = katze_object_get_string (extension, "key"); + gchar* subname = key ? g_strdup_printf ("%s/%s", filename, key) : g_strdup (filename); + g_key_file_set_boolean (key_file, "extensions", subname, TRUE); + g_free (key); + g_free (subname); + } + g_object_unref (extensions); + } } + saved = sokoke_key_file_save_to_file (key_file, filename, error); g_key_file_free (key_file); return saved; |