[gnome-flashback] workarounds: fix memory leak
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-flashback] workarounds: fix memory leak
- Date: Wed, 27 Apr 2016 20:57:06 +0000 (UTC)
commit 5e6c6e2cfe584c60335a4a129db9eb0dcc782800
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Wed Apr 27 23:55:43 2016 +0300
workarounds: fix memory leak
gnome-flashback/libworkarounds/gf-workarounds.c | 51 ++++++++++-------------
1 files changed, 22 insertions(+), 29 deletions(-)
---
diff --git a/gnome-flashback/libworkarounds/gf-workarounds.c b/gnome-flashback/libworkarounds/gf-workarounds.c
index 560c1c9..75797e9 100644
--- a/gnome-flashback/libworkarounds/gf-workarounds.c
+++ b/gnome-flashback/libworkarounds/gf-workarounds.c
@@ -281,8 +281,9 @@ parse_settings (GfWorkarounds *workarounds,
setting->value = value;
setting->last_change_serial = last_change_serial;
- g_hash_table_insert (settings, (gpointer) x_name, setting);
+ g_hash_table_insert (settings, g_strdup (x_name), setting);
+ g_free (x_name);
x_name = NULL;
value = NULL;
}
@@ -429,28 +430,24 @@ static void
apply_app_menu_workaround (GfWorkarounds *workarounds)
{
const gchar *key;
+ XSettingsSetting *old;
XSettingsSetting *setting;
key = "Gtk/ShellShowsAppMenu";
- setting = g_hash_table_lookup (workarounds->xsettings, key);
-
- if (setting != NULL)
- {
- g_hash_table_steal (workarounds->xsettings, key);
- free_gvalue (setting->value);
- }
- else
- {
- setting = g_new0 (XSettingsSetting, 1);
- setting->name = g_strdup (key);
- setting->type = XSETTINGS_TYPE_INT;
- setting->last_change_serial = 0;
- }
+ old = g_hash_table_lookup (workarounds->xsettings, key);
+ setting = g_new0 (XSettingsSetting, 1);
+ setting->name = g_strdup (key);
+ setting->type = XSETTINGS_TYPE_INT;
setting->value = g_new0 (GValue, 1);
+ setting->last_change_serial = 0;
+
g_value_init (setting->value, G_TYPE_INT);
g_value_set_int (setting->value, 0);
+ if (old != NULL)
+ setting->last_change_serial = old->last_change_serial;
+
g_hash_table_insert (workarounds->xsettings, g_strdup (key), setting);
}
@@ -458,28 +455,24 @@ static void
apply_button_layout_workaround (GfWorkarounds *workarounds)
{
const gchar *key;
+ XSettingsSetting *old;
XSettingsSetting *setting;
key = "Gtk/DecorationLayout";
- setting = g_hash_table_lookup (workarounds->xsettings, key);
-
- if (setting != NULL)
- {
- g_hash_table_steal (workarounds->xsettings, key);
- free_gvalue (setting->value);
- }
- else
- {
- setting = g_new0 (XSettingsSetting, 1);
- setting->name = g_strdup (key);
- setting->type = XSETTINGS_TYPE_STRING;
- setting->last_change_serial = 0;
- }
+ old = g_hash_table_lookup (workarounds->xsettings, key);
+ setting = g_new0 (XSettingsSetting, 1);
+ setting->name = g_strdup (key);
+ setting->type = XSETTINGS_TYPE_STRING;
setting->value = g_new0 (GValue, 1);
+ setting->last_change_serial = 0;
+
g_value_init (setting->value, G_TYPE_STRING);
g_value_set_string (setting->value, workarounds->fix_button_layout);
+ if (old != NULL)
+ setting->last_change_serial = old->last_change_serial;
+
g_hash_table_insert (workarounds->xsettings, g_strdup (key), setting);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]