From 988df882ea3eacd9c2cd140d66ca51ba83d30d47 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 15 Oct 2015 12:40:00 -0400 Subject: [PATCH] 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 4c373af27..4cd7d492e 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--;