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 f5d4a807c8
commit 104a57b58a
1 changed files with 4 additions and 2 deletions

View File

@ -425,8 +425,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 ; )
{
@ -439,6 +437,10 @@ _eo_callback_remove(Private_Data *pd, Eo_Callback_Description *cb)
{
pitr->next = titr->next;
}
else
{
pd->callbacks = titr->next;
}
free(titr);
}
else