Blob Blame History Raw
From 3624c5a41655df7c882aacd7e780f03609b895da Mon Sep 17 00:00:00 2001
From: rbuj <robert.buj@gmail.com>
Date: Sat, 23 Oct 2021 13:35:56 +0200
Subject: [PATCH 3/6] prefs: fix memory leak

---
 src/core/prefs.c | 48 +++++++++++++++++++++++++++---------------------
 1 file changed, 27 insertions(+), 21 deletions(-)

diff --git a/src/core/prefs.c b/src/core/prefs.c
index 0c11fff6..1198113a 100644
--- a/src/core/prefs.c
+++ b/src/core/prefs.c
@@ -1746,21 +1746,23 @@ static void
 init_bindings (GSettings *settings)
 {
   GSettingsSchema *schema;
-  gchar **list = NULL;
-  gchar *str_val = NULL;
+  gchar **list;
+  gsize i;
 
   g_object_get (settings, "settings-schema", &schema, NULL);
   list = g_settings_schema_list_keys (schema);
   g_settings_schema_unref (schema);
 
-  while (*list != NULL)
+  for (i = 0; list[i] != NULL; i++)
     {
-      str_val = g_settings_get_string (settings, *list);
-      update_key_binding (*list, str_val);
-      list++;
+      gchar *str_val;
+
+      str_val = g_settings_get_string (settings, list[i]);
+      update_key_binding (list[i], str_val);
+      g_free (str_val);
     }
 
-  g_free (str_val);
+  g_strfreev (list);
 }
 
 static void
@@ -1779,42 +1781,46 @@ static void
 init_commands (void)
 {
   GSettingsSchema *schema;
-  gchar **list = NULL;
-  gchar *str_val = NULL;
+  gchar **list;
+  gsize i;
 
   g_object_get (settings_command, "settings-schema", &schema, NULL);
   list = g_settings_schema_list_keys (schema);
   g_settings_schema_unref (schema);
 
-  while (*list != NULL)
+  for (i = 0; list[i] != NULL; i++)
     {
-      str_val = g_settings_get_string (settings_command, *list);
-      update_command (*list, str_val);
-      list++;
+      gchar *str_val;
+
+      str_val = g_settings_get_string (settings_command, list[i]);
+      update_command (list[i], str_val);
+      g_free (str_val);
     }
 
-  g_free (str_val);
+  g_strfreev (list);
 }
 
 static void
 init_workspace_names (void)
 {
   GSettingsSchema *schema;
-  gchar **list = NULL;
-  gchar *str_val = NULL;
+  gchar **list;
+  gsize i;
 
   g_object_get (settings_workspace_names, "settings-schema", &schema, NULL);
   list = g_settings_schema_list_keys (schema);
   g_settings_schema_unref (schema);
 
-  while (*list != NULL)
+  for (i = 0; list[i] != NULL; i++)
     {
-      str_val = g_settings_get_string (settings_workspace_names, *list);
-      update_workspace_name (*list, str_val);
-      list++;
+      gchar *str_val;
+
+      str_val = g_settings_get_string (settings_workspace_names, list[i]);
+      update_workspace_name (list[i], str_val);
+      g_free (str_val);
     }
 
-  g_free (str_val);
+  g_strfreev (list);
 }
 
 static gboolean
-- 
2.36.1