summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvinash Sonawane <rootkea@gmail.com>2021-08-10 01:26:32 +0530
committerAvinash Sonawane <rootkea@gmail.com>2022-01-21 10:14:20 +0530
commit986207c41a09c72cbb8059244d71c219ad8f41a1 (patch)
tree34ae4693b4032dec707193ef3f61a2ee4a115115
parentf194c9fd924ec0db617e49521244d0fdbc82f723 (diff)
downloadixfce4-power-manager-986207c41a09c72cbb8059244d71c219ad8f41a1.tar.gz
Fix memory leak and make `while` more efficient
MR !20
-rw-r--r--src/xfpm-manager.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/xfpm-manager.c b/src/xfpm-manager.c
index 3efc8ba1..dae407fc 100644
--- a/src/xfpm-manager.c
+++ b/src/xfpm-manager.c
@@ -590,7 +590,7 @@ xfpm_manager_set_idle_alarm (XfpmManager *manager)
static gchar*
xfpm_manager_get_systemd_events(XfpmManager *manager)
{
- GSList *events = NULL;
+ GSList *events = NULL, *current_event;
gchar *what = g_strdup ("");
gboolean logind_handle_power_key, logind_handle_suspend_key, logind_handle_hibernate_key, logind_handle_lid_switch;
@@ -610,15 +610,21 @@ xfpm_manager_get_systemd_events(XfpmManager *manager)
if (!logind_handle_lid_switch)
events = g_slist_append(events, "handle-lid-switch");
- while (events != NULL)
+ if (events != NULL)
{
- if ( g_strcmp0 (what, "") == 0 )
- what = g_strdup ( (gchar *) events->data );
- else
- what = g_strconcat (what, ":", (gchar *) events->data, NULL);
- events = g_slist_next (events);
+ g_free(what);
+ current_event = events;
+
+ what = g_strdup ( (gchar *) current_event->data );
+ while ((current_event = g_slist_next (current_event)))
+ {
+ gchar *what_temp = g_strconcat (what, ":", (gchar *) current_event->data, NULL);
+ g_free(what);
+ what = what_temp;
+ }
+
+ g_slist_free(events);
}
- g_slist_free(events);
return what;
}