From: <jos...@ju...> - 2007-04-19 16:48:08
|
Brian wrote: > After some more digging, here's what I've come up with: > = > * When you hit enter, the button widget is 'activated' > * e_widget_activate() calls the No buttons callback, which > deletes the dialog > * this frees the evas, which frees its layers, which frees > its objects, which happens to set obj->callbacks to NULL > * e is still looping through its callbacks at this point, > and segfaults > * the NULL check in the aforementioned patch happens to work, > but only by luck (the object pointer its accessing is now > invalid). > = > So, should we require that evas callbacks not free their evas? > (E.g. force them to schedule a free and then actually do it > outside of any callbacks) > = > Or, should we alter evas to defer evas frees while walking > an object's callbacks? Ummm... this is really more raster's domain of intimacy :) but I'd say that an evas obj's callback shouldn't free an evas (wether the one it's in or any other), but the latter possibility sounds like it could be reasonable as well.. I'd have to look at this in more detail to give any real suggestion on my part though. jose. |