On Thu, 14 Feb 2013 13:05:32 +0000 Michael Blumenkrantz
<michael.blumenkra...@gmail.com> said:

> I don't even want to know what you're doing that you'd want to hide bugs
> like this

i was seeing some stringshare issues with bd->borderneame. a quick look shows
all is fine.. an the only thing that may be happening is access to it after an
unref from the bd.. where there is still a ptr in the struct until its freed()
and many calls happen after this unref. calls higher up all go null out
strings/fields.. but later down they done.. so its more consistent now
anyway. :)

> On Thu, Feb 14, 2013 at 1:02 PM, Enlightenment SVN <
> no-re...@enlightenment.org> wrote:
> 
> > Log:
> > paranoia - set thigns we free to nullin case a side-effect of a later
> >   call calls some callback that somehow accesses the bd we are
> >   freeing... :)
> >
> >
> >
> > Author:       raster
> > Date:         2013-02-14 05:02:56 -0800 (Thu, 14 Feb 2013)
> > New Revision: 83892
> > Trac:         http://trac.enlightenment.org/e/changeset/83892
> >
> > Modified:
> >   trunk/e/src/bin/e_border.c
> >
> > Modified: trunk/e/src/bin/e_border.c
> > ===================================================================
> > --- trunk/e/src/bin/e_border.c  2013-02-14 12:54:38 UTC (rev 83891)
> > +++ trunk/e/src/bin/e_border.c  2013-02-14 13:02:56 UTC (rev 83892)
> > @@ -5022,37 +5022,51 @@
> >          bd->already_unparented = 1;
> >       }
> >     if (bd->group) eina_list_free(bd->group);
> > +   bd->group = NULL;
> >     if (bd->transients) eina_list_free(bd->transients);
> > +   bd->transients = NULL;
> >     if (bd->stick_desks) eina_list_free(bd->stick_desks);
> > +   bd->stick_desks = NULL;
> >     if (bd->client.netwm.icons)
> >       {
> >          int i;
> >          for (i = 0; i < bd->client.netwm.num_icons; i++)
> >            free(bd->client.netwm.icons[i].data);
> >          free(bd->client.netwm.icons);
> > +        bd->client.netwm.icons = NULL;
> >       }
> >     free(bd->client.netwm.extra_types);
> > +   bd->client.netwm.extra_types = NULL;
> >     if (bd->client.border.name)
> >       eina_stringshare_del(bd->client.border.name);
> > +   bd->client.border.name = NULL;
> >     if (bd->bordername)
> >       eina_stringshare_del(bd->bordername);
> > +   bd->bordername = NULL;
> >     if (bd->client.icccm.name)
> >       eina_stringshare_del(bd->client.icccm.name);
> > +   bd->client.icccm.name = NULL;
> >     if (bd->client.icccm.class)
> >       {
> > -        if ((!strcasecmp(bd->client.icccm.class, "vmplayer")) ||
> > (!strcasecmp(bd->client.icccm.class, "vmware")))
> > +        if ((!strcasecmp(bd->client.icccm.class, "vmplayer")) ||
> > +            (!strcasecmp(bd->client.icccm.class, "vmware")))
> >            e_bindings_mapping_change_enable(EINA_TRUE);
> >          eina_stringshare_del(bd->client.icccm.class);
> > +        bd->client.icccm.class = NULL;
> >       }
> >     if (bd->client.icccm.title)
> >       eina_stringshare_del(bd->client.icccm.title);
> > +   bd->client.icccm.title = NULL;
> >     if (bd->client.icccm.icon_name)
> >       eina_stringshare_del(bd->client.icccm.icon_name);
> > +   bd->client.icccm.icon_name = NULL;
> >     if (bd->client.icccm.machine)
> >       eina_stringshare_del(bd->client.icccm.machine);
> > +   bd->client.icccm.machine = NULL;
> >     if (bd->client.icccm.window_role)
> >       eina_stringshare_del(bd->client.icccm.window_role);
> > -
> > +   bd->client.icccm.window_role = NULL;
> > +
> >     if ((bd->client.icccm.command.argc > 0) &&
> > (bd->client.icccm.command.argv))
> >       {
> >          int i;
> > @@ -5060,24 +5074,36 @@
> >          for (i = 0; i < bd->client.icccm.command.argc; i++)
> >            free(bd->client.icccm.command.argv[i]);
> >          free(bd->client.icccm.command.argv);
> > +        bd->client.icccm.command.argv = NULL;
> >       }
> >     if (bd->client.netwm.name)
> >       eina_stringshare_del(bd->client.netwm.name);
> > +   bd->client.netwm.name = NULL;
> >     if (bd->client.netwm.icon_name)
> >       eina_stringshare_del(bd->client.netwm.icon_name);
> > +   bd->client.netwm.icon_name = NULL;
> >     e_object_del(E_OBJECT(bd->shape));
> > +   bd->shape = NULL;
> >     if (bd->internal_icon) eina_stringshare_del(bd->internal_icon);
> > +   bd->internal_icon = NULL;
> >     if (bd->internal_icon_key) eina_stringshare_del(bd->internal_icon_key);
> > +   bd->internal_icon_key = NULL;
> >     if (bd->icon_object) evas_object_del(bd->icon_object);
> > +   bd->icon_object = NULL;
> >     evas_object_del(bd->bg_object);
> > +   bd->bg_object = NULL;
> >     e_canvas_del(bd->bg_ecore_evas);
> > +   bd->bg_ecore_evas = NULL;
> >     ecore_evas_free(bd->bg_ecore_evas);
> > +   bd->bg_ecore_evas = NULL;
> >     ecore_x_window_free(bd->client.shell_win);
> > +   bd->client.shell_win = 0;
> >     e_focus_setdown(bd);
> >     e_bindings_mouse_ungrab(E_BINDING_CONTEXT_WINDOW, bd->win);
> >     e_bindings_wheel_ungrab(E_BINDING_CONTEXT_WINDOW, bd->win);
> >     ecore_x_window_free(bd->win);
> > -
> > +   bd->win = 0;
> > +
> >     eina_hash_del(borders_hash, e_util_winid_str_get(bd->client.win), bd);
> >     eina_hash_del(borders_hash, e_util_winid_str_get(bd->bg_win), bd);
> >     eina_hash_del(borders_hash, e_util_winid_str_get(bd->win), bd);
> >
> >
> >
> > ------------------------------------------------------------------------------
> > Free Next-Gen Firewall Hardware Offer
> > Buy your Sophos next-gen firewall before the end March 2013
> > and get the hardware for free! Learn more.
> > http://p.sf.net/sfu/sophos-d2d-feb
> > _______________________________________________
> > enlightenment-svn mailing list
> > enlightenment-...@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
> >
> ------------------------------------------------------------------------------
> Free Next-Gen Firewall Hardware Offer
> Buy your Sophos next-gen firewall before the end March 2013 
> and get the hardware for free! Learn more.
> http://p.sf.net/sfu/sophos-d2d-feb
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    ras...@rasterman.com


------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013 
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to