[PATCH] dix: UpdateTouchesForGrab must only free the listener grab if it is non-NULL

Jasper St. Pierre jstpierre at mecheye.net
Fri Jul 12 09:43:04 PDT 2013


I'm assuming FreeGrab explicitly does not allow NULLs because an unwanted
instance of NULL would be quite the bug.


On Fri, Jul 12, 2013 at 8:28 AM, walter harms <wharms at bfs.de> wrote:

>
>
> Am 11.07.2013 21:04, schrieb Peter Hutterer:
> > If a client calls XIGrabDevice in response to a ButtonPress event
> (regular
> > event selection), the device will have a grab, but listener->grab is
> NULL.
> >
> > Check for that, to avoid logspam.
> >
> > [ 26293.863] (EE) BUG: triggered 'if (!pGrab)'
> > [ 26293.863] (EE) BUG: grabs.c:256 in FreeGrab()
> > [ 26293.863] (EE)
> > [ 26293.863] (EE) Backtrace:
> > [ 26293.864] (EE) 0: /usr/bin/Xorg (FreeGrab+0x54) [0x45d3fc]
> > [ 26293.864] (EE) 1: /usr/bin/Xorg (UpdateTouchesForGrab+0x135)
> [0x447d4e]
> > [ 26293.864] (EE) 2: /usr/bin/Xorg (ActivatePointerGrab+0x1ba) [0x447f3d]
> > [ 26293.864] (EE) 3: /usr/bin/Xorg (GrabDevice+0x3e6) [0x4503bc]
> > [ 26293.864] (EE) 4: /usr/bin/Xorg (ProcXIGrabDevice+0x1f9) [0x5981b1]
> > [ 26293.865] (EE) 5: /usr/bin/Xorg (ProcIDispatch+0x78) [0x58aa17]
> > [ 26293.865] (EE) 6: /usr/bin/Xorg (Dispatch+0x30d) [0x43347e]
> > [ 26293.865] (EE) 7: /usr/bin/Xorg (main+0x61d) [0x498175]
> > [ 26293.865] (EE) 8: /lib64/libc.so.6 (__libc_start_main+0xf5)
> [0x3df5621b75]
> > [ 26293.865] (EE) 9: /usr/bin/Xorg (_start+0x29) [0x423a19]
> > [ 26293.866] (EE) 10: ? (?+0x29) [0x29]
> > [ 26293.866] (EE)
> >
> > Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> > ---
> >  dix/events.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/dix/events.c b/dix/events.c
> > index 03b2d2e..ed3138d 100644
> > --- a/dix/events.c
> > +++ b/dix/events.c
> > @@ -1441,7 +1441,8 @@ UpdateTouchesForGrab(DeviceIntPtr mouse)
> >                  listener->type = LISTENER_POINTER_GRAB;
> >              else
> >                  listener->type = LISTENER_GRAB;
> > -            FreeGrab(listener->grab);
> > +            if (listener->grab)
> > +                FreeGrab(listener->grab);
> >              listener->grab = AllocGrab(grab);
> >          }
> >      }
>
> free(NULL) works.
> IMHO this patch should go to FreeGrab() to be in line with other free()
> functions.
> Is there a special reason not to do this  ?
>
> re
>  wh
>
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>



-- 
  Jasper
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.x.org/archives/xorg-devel/attachments/20130712/76edffba/attachment-0001.html>


More information about the xorg-devel mailing list