On Thu, Apr 5, 2012 at 11:42 AM, Andreas Ericsson <[email protected]> wrote: > On 04/04/2012 02:37 PM, Kristian Hoegsberg wrote: >> On Wed, Apr 04, 2012 at 01:51:08AM -0600, Scott Moreau wrote: >>> --- >> >>> >>> - write_png(output_width, output_height, data); >>> + write_png(ss_area_width, ss_area_height, data); >>> + >>> + wl_list_for_each(ss_output,&output_list, link) { >>> + free(ss_output); >> >> You need wl_list_for_each_safe here since you're freeing the structs >> that holds the prev/next pointers. >> > > Is there a point to having two different ones? The compiler still > generates code to stash the next and prev pointers, so any difference > in execution time should be microscopic, if it exists at all, and the > possibility of using the wrong one is obviously very real.
With wl_list_for_each, iterating over a list of 'struct foo' you need only declare one such struct. With wl_list_for_each_safe you also need to declare a "tmp" one. As a side-effect it can be easier to read since one can assume that when using the _safe version the item may be destroyed, while using the plain version, it's means that the item will not be destroyed. Except if someone uses it incorrectly of course. Jonas _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
