diff options
author | Avinash Sonawane <rootkea@gmail.com> | 2021-08-10 01:26:32 +0530 |
---|---|---|
committer | Avinash Sonawane <rootkea@gmail.com> | 2022-01-21 10:14:20 +0530 |
commit | 986207c41a09c72cbb8059244d71c219ad8f41a1 (patch) | |
tree | 34ae4693b4032dec707193ef3f61a2ee4a115115 | |
parent | f194c9fd924ec0db617e49521244d0fdbc82f723 (diff) | |
download | ixfce4-power-manager-986207c41a09c72cbb8059244d71c219ad8f41a1.tar.gz |
Fix memory leak and make `while` more efficient
MR !20
-rw-r--r-- | src/xfpm-manager.c | 22 |
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; } |