diff --git a/Xi/exevents.c b/Xi/exevents.c index 41a4097cc..dcbf9a1a8 100644 --- a/Xi/exevents.c +++ b/Xi/exevents.c @@ -1294,13 +1294,13 @@ RetrieveTouchDeliveryData(DeviceIntPtr dev, TouchPointInfoPtr ti, *mask = NULL; *grab = NULL; - if (listener->type == LISTENER_GRAB || + if (listener && listener->type == LISTENER_GRAB || listener->type == LISTENER_POINTER_GRAB) { *grab = listener->grab; BUG_RETURN_VAL(!*grab, FALSE); } - else if (ti->emulate_pointer && dev->deviceGrab.grab && + else if (ti && ti->emulate_pointer && dev && dev->deviceGrab.grab && !dev->deviceGrab.fromPassiveGrab) { /* There may be an active pointer grab on the device */ *grab = dev->deviceGrab.grab; diff --git a/Xi/exevents.c.rej b/Xi/exevents.c.rej new file mode 100644 index 000000000..56408cf07 --- /dev/null +++ b/Xi/exevents.c.rej @@ -0,0 +1,18 @@ +--- exevents.c ++++ exevents.c +@@ -1294,13 +1294,13 @@ RetrieveTouchDeliveryData(DeviceIntPtr dev, TouchPointInfoPtr ti, + *mask = NULL; + *grab = NULL; + +- if (listener->type == LISTENER_GRAB || ++ if (listener && listener->type == LISTENER_GRAB || + listener->type == LISTENER_POINTER_GRAB) { + *grab = listener->grab; + + BUG_RETURN_VAL(!*grab, FALSE); + } +- else if (ti->emulate_pointer && dev->deviceGrab.grab && ++ else if (ti && ti->emulate_pointer && dev && dev->deviceGrab.grab && + !dev->deviceGrab.fromPassiveGrab) { + /* There may be an active pointer grab on the device */ + *grab = dev->deviceGrab.grab;