discomfitor pushed a commit to branch enlightenment-0.19.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=988df882ea3eacd9c2cd140d66ca51ba83d30d47

commit 988df882ea3eacd9c2cd140d66ca51ba83d30d47
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Thu Oct 15 12:40:00 2015 -0400

    reject deleted clients from x11 sync alarm event callback
    
    E_Client->comp_data is null after a client has been deleted, so
    attempting to handle events which require the dereferencing of this
    pointer after a client has been deleted will result in a crash
    
    these events should be rejected after delete regardless, since at this
    time the compositor has stopped handling events for the client
    
    ref f42c6aa1871cca6c6ffb39b65e2bfa3815bff35c
---
 src/bin/e_comp_x.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index 4c373af..4cd7d49 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -2352,7 +2352,7 @@ _e_comp_x_sync_alarm(void *data EINA_UNUSED, int type 
EINA_UNUSED, Ecore_X_Event
    Eina_Bool resize = EINA_FALSE;
 
    ec = _e_comp_x_client_find_by_alarm(ev->alarm);
-   if (!ec) return ECORE_CALLBACK_RENEW;
+   if ((!ec) || e_object_is_del(E_OBJECT(ec))) return ECORE_CALLBACK_RENEW;
 
    if (ec->netwm.sync.wait)
      ec->netwm.sync.wait--;

-- 


Reply via email to