Eo callbacks: Fix a possible issue of corrupted callback list.

This happens when we delete more than one callback at the beginning
of the list (i.e 2 or more) in one go.
This commit is contained in:
Tom Hacohen 2013-09-30 14:16:46 +01:00
parent ecc445b47c
commit cdea54dd40
1 changed files with 4 additions and 2 deletions

View File

@ -433,8 +433,6 @@ _eo_callback_remove(Private_Data *pd, Eo_Callback_Description *cb)
Eo_Callback_Description *itr, *pitr = NULL;
itr = pd->callbacks;
if (pd->callbacks == cb)
pd->callbacks = cb->next;
for ( ; itr; )
{
@ -447,6 +445,10 @@ _eo_callback_remove(Private_Data *pd, Eo_Callback_Description *cb)
{
pitr->next = titr->next;
}
else
{
pd->callbacks = titr->next;
}
free(titr);
}
else