fix segv where comp_data is null but still accessed
it seems i have an override-redirect window just off the bottom-right of my screen - i think its the scim input panel status. what happens is it is "managed" by comp but then deleted (_e_comp_x_hook_client_del called), BUT _e_comp_x_object_add is called with a deferred event for that client to add it again (likely this is a race) which finds he client in a state of not having comp_data as the E_FREE in _e_comp_x_hook_client_del() frees it and sets it to NULL. move the comp_data free to the actual client free (which is the last time a client is valid at all) solves this.
This commit is contained in:
parent
61aa61651c
commit
83397e1bde
|
@ -474,6 +474,7 @@ _e_client_free(E_Client *ec)
|
|||
|
||||
e_hints_client_list_set();
|
||||
evas_object_del(ec->frame);
|
||||
E_FREE(ec->comp_data);
|
||||
free(ec);
|
||||
}
|
||||
|
||||
|
|
|
@ -4178,7 +4178,6 @@ _e_comp_x_hook_client_del(void *d EINA_UNUSED, E_Client *ec)
|
|||
ec->parent->modal = NULL;
|
||||
}
|
||||
E_FREE_FUNC(ec->comp_data->first_draw_delay, ecore_timer_del);
|
||||
E_FREE(ec->comp_data);
|
||||
if (post_clients)
|
||||
post_clients = eina_list_remove(post_clients, ec);
|
||||
|
||||
|
|
Loading…
Reference in New Issue