correctly free battery linked list

This commit is contained in:
Sebastian Reichel
2015-09-12 04:32:45 +02:00
parent eb86d5ac00
commit 3d39da9330

View File

@@ -193,40 +193,31 @@ static gboolean init_linux_mains(struct psy_mains *ac) {
return TRUE; return TRUE;
} }
void battery_os_free() { static void psy_battery_free(gpointer data) {
GList *l = batteries; struct psy_battery *bat = data;
uevent_unregister_notifier(&psy_change);
uevent_unregister_notifier(&psy_plug);
while (l != NULL) {
GList *next = l->next;
struct psy_battery *bat = l->data;
g_free(bat->name); g_free(bat->name);
g_free(bat->path_status); g_free(bat->path_status);
g_free(bat->path_power_now); g_free(bat->path_power_now);
g_free(bat->path_energy_full); g_free(bat->path_energy_full);
g_free(bat->path_energy_now); g_free(bat->path_energy_now);
g_free(bat->path_present); g_free(bat->path_present);
g_free(bat);
}
batteries = g_list_delete_link(batteries, l); static void psy_mains_free(gpointer data) {
l = next; struct psy_mains *ac = data;
}
l = mains;
while (l != NULL) {
GList *next = l->next;
struct psy_mains *ac = l->data;
g_free(ac->name); g_free(ac->name);
g_free(ac->path_online); g_free(ac->path_online);
g_free(ac);
}
mains = g_list_delete_link(mains, l); void battery_os_free() {
l = next; uevent_unregister_notifier(&psy_change);
} uevent_unregister_notifier(&psy_plug);
g_list_free_full(batteries, psy_battery_free);
batteries = NULL; batteries = NULL;
g_list_free_full(mains, psy_mains_free);
mains = NULL; mains = NULL;
} }