derekf pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=9566b72e865ccee156641dbb76775cefd88b36b7

commit 9566b72e865ccee156641dbb76775cefd88b36b7
Author: Derek Foreman <der...@osg.samsung.com>
Date:   Fri Sep 8 14:38:08 2017 -0500

    Fix crash when processing a wayland client cursor set after death
    
    It looks like the only way we can get here with NULL resource data
    is when we explicitly cleared it in the del hook, meaning the client
    is dead to us.  In this case it's ok to ignore the cursor set request.
    
    ref T4988
---
 src/bin/e_comp_wl_input.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/bin/e_comp_wl_input.c b/src/bin/e_comp_wl_input.c
index 1ae189297..c3da683c2 100644
--- a/src/bin/e_comp_wl_input.c
+++ b/src/bin/e_comp_wl_input.c
@@ -83,6 +83,12 @@ _e_comp_wl_input_pointer_cb_cursor_set(struct wl_client 
*client, struct wl_resou
         return;
      }
    ec = wl_resource_get_user_data(surface_resource);
+   /* I think this only happens when we've deleted the resource from
+    * the client del callback - so the client is gone and shouldn't be
+    * setting a cursor, but the surface still exists so stale requests
+    * are being processed... let's BAIL.
+    */
+   if (!ec) return;
    if (!ec->re_manage)
      {
         ec->comp_data->cursor = ec->re_manage = 1;

-- 


Reply via email to