On Thu, Jan 26, 2012 at 5:09 PM, Christophe Fergeau <cfergeau@xxxxxxxxxx> wrote: > On Thu, Jan 26, 2012 at 05:05:15PM +0200, Zeeshan Ali (Khattak) wrote: >> On Thu, Jan 26, 2012 at 11:19 AM, Christophe Fergeau >> <cfergeau@xxxxxxxxxx> wrote: >> > On Thu, Jan 26, 2012 at 08:18:38AM +0100, Philipp Hahn wrote: >> >> Your changed version only has the same behaviour, if the user-passed-in >> >> function iter_func() never changes it->next, which you can't guarentee here. >> >> You need to keep the "next" copy. >> > >> > Yes, the for loop was changed to a while loop recently exactly for that >> > purpose: >> >> I don't get it, your commit clearly introduced a hang in Boxes and my >> change fixes it back while also simplifying the code slightly. So I >> don't at all buy the 'while' being more 'reliable'. > > The callback gets passed 'it', and the callback used in > gvir_config_object_delete_child can unlink/free 'it', so things won't work > as expected if you try to get it->next after calling the callback. Using a > while loop and getting it->next before calling the callback avoids this > problem. Ah, missed that somehow. :) Sent another fix for the infinite loop, please check it out. -- Regards, Zeeshan Ali (Khattak) FSF member#5124 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list