e: segv-- on power removal.

SVN revision: 62181
This commit is contained in:
Cedric BAIL 2011-08-07 12:35:21 +00:00
parent 2640577d5e
commit 29dffc306c
3 changed files with 6 additions and 16 deletions

View File

@ -224,14 +224,13 @@ _battery_dbus_battery_add(const char *udi)
static void static void
_battery_dbus_battery_del(const char *udi) _battery_dbus_battery_del(const char *udi)
{ {
Eina_List *l;
Battery *bat; Battery *bat;
bat = _battery_battery_find(udi); bat = _battery_battery_find(udi);
if (bat) if (bat)
{ {
e_dbus_signal_handler_del(e_dbus_conn, bat->prop_change); e_dbus_signal_handler_del(e_dbus_conn, bat->prop_change);
l = eina_list_data_find(device_batteries, bat); device_batteries = eina_list_remove(device_batteries, bat);
eina_stringshare_del(bat->udi); eina_stringshare_del(bat->udi);
eina_stringshare_del(bat->technology); eina_stringshare_del(bat->technology);
eina_stringshare_del(bat->type); eina_stringshare_del(bat->type);
@ -239,7 +238,6 @@ _battery_dbus_battery_del(const char *udi)
eina_stringshare_del(bat->model); eina_stringshare_del(bat->model);
eina_stringshare_del(bat->vendor); eina_stringshare_del(bat->vendor);
free(bat); free(bat);
device_batteries = eina_list_remove_list(device_batteries, l);
return; return;
} }
_battery_device_update(); _battery_device_update();
@ -268,18 +266,16 @@ _battery_dbus_ac_adapter_add(const char *udi)
static void static void
_battery_dbus_ac_adapter_del(const char *udi) _battery_dbus_ac_adapter_del(const char *udi)
{ {
Eina_List *l;
Ac_Adapter *ac; Ac_Adapter *ac;
ac = _battery_ac_adapter_find(udi); ac = _battery_ac_adapter_find(udi);
if (ac) if (ac)
{ {
e_dbus_signal_handler_del(e_dbus_conn, ac->prop_change); e_dbus_signal_handler_del(e_dbus_conn, ac->prop_change);
l = eina_list_data_find(device_ac_adapters, ac); device_ac_adapters = eina_list_remove(device_ac_adapters, ac);
eina_stringshare_del(ac->udi); eina_stringshare_del(ac->udi);
eina_stringshare_del(ac->product); eina_stringshare_del(ac->product);
free(ac); free(ac);
device_ac_adapters = eina_list_remove_list(device_ac_adapters, l);
return; return;
} }
_battery_device_update(); _battery_device_update();

View File

@ -142,7 +142,6 @@ _battery_udev_ac_add(const char *syspath)
static void static void
_battery_udev_battery_del(const char *syspath) _battery_udev_battery_del(const char *syspath)
{ {
Eina_List *l;
Battery *bat; Battery *bat;
if (!(bat = _battery_battery_find(syspath))) if (!(bat = _battery_battery_find(syspath)))
@ -152,20 +151,18 @@ _battery_udev_battery_del(const char *syspath)
return; return;
} }
l = eina_list_data_find(device_batteries, bat); device_batteries = eina_list_remove(device_batteries, bat);
eina_stringshare_del(bat->udi); eina_stringshare_del(bat->udi);
eina_stringshare_del(bat->technology); eina_stringshare_del(bat->technology);
eina_stringshare_del(bat->model); eina_stringshare_del(bat->model);
eina_stringshare_del(bat->vendor); eina_stringshare_del(bat->vendor);
ecore_poller_del(bat->poll); ecore_poller_del(bat->poll);
free(bat); free(bat);
device_batteries = eina_list_remove_list(device_batteries, l);
} }
static void static void
_battery_udev_ac_del(const char *syspath) _battery_udev_ac_del(const char *syspath)
{ {
Eina_List *l;
Ac_Adapter *ac; Ac_Adapter *ac;
if (!(ac = _battery_ac_adapter_find(syspath))) if (!(ac = _battery_ac_adapter_find(syspath)))
@ -175,10 +172,9 @@ _battery_udev_ac_del(const char *syspath)
return; return;
} }
l = eina_list_data_find(device_ac_adapters, ac); device_ac_adapters = eina_list_remove(device_ac_adapters, ac);
eina_stringshare_del(ac->udi); eina_stringshare_del(ac->udi);
free(ac); free(ac);
device_ac_adapters = eina_list_remove_list(device_ac_adapters, l);
} }
static Eina_Bool static Eina_Bool

View File

@ -999,14 +999,12 @@ _e_winlist_border_add(E_Border *bd, E_Zone *zone, E_Desk *desk)
static void static void
_e_winlist_border_del(E_Border *bd) _e_winlist_border_del(E_Border *bd)
{ {
E_Winlist_Win *ww;
Eina_List *l; Eina_List *l;
if (bd == _last_border) _last_border = NULL; if (bd == _last_border) _last_border = NULL;
for (l = _wins; l; l = l->next) EINA_LIST_FOREACH(_wins, l, ww)
{ {
E_Winlist_Win *ww;
ww = l->data;
if (ww->border == bd) if (ww->border == bd)
{ {
e_object_unref(E_OBJECT(ww->border)); e_object_unref(E_OBJECT(ww->border));