On Mon, Jan 19, 2009 at 9:15 PM, Vincent Torri <vto...@univ-evry.fr> wrote:
>
>
> On Mon, 19 Jan 2009, Gustavo Sverzut Barbieri wrote:
>
>>> about that bug, i think that the problem is that, line 191, we try to
>>> free
>>> l->data while l is not available anymore.
>>>
>>> so maybe we can switch the lines 190 et 191 : free first l->data, then
>>> remove the list item l.
>>>
>>> what do you think ?
>>
>> it is still wrong since l->next will be accessed right after that. You
>> need to move E_FREE() call before list removal and use proper
>> iteration, might be good use of my EINA_LIST_FOREACH_SAFE().
>
> I've already comitted it. I add a FIXME to say that it's not the correct
> fix. I don't know how to use EINA_LIST_FOREACH_SAFE().

check the docs in eina_list.h, should be easy to understand, it's a
drop-in replacement to EINA_LIST_FOREACH() but takes an extra variable
to pre-fetch the next pointer so if you remove the current node its
->next is already known. If you remove more than the current node
(hint: current->next), then you're screwed anyway :-)  In this case
you must do it manually.

-- 
Gustavo Sverzut Barbieri
http://profusion.mobi embedded systems
--------------------------------------
MSN: barbi...@gmail.com
Skype: gsbarbieri
Mobile: +55 (19) 9225-2202

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to