diff --git a/src/xfpm-manager.c b/src/xfpm-manager.c index 3efc8ba1225f59141a27277867a260fe4a0d7fe0..dae407fc3bedb7e14bdf3ccb81d1e8506c35b868 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; }