On Sat, Oct 08, 2016 at 11:35:57AM +0200, Niels Ole Salscheider wrote:
> v2: Fix formating issues

tbh, I usually prefer not to touch any parameters on errors. This should
better be fixed in the man page to specify the exact behaviour.

Cheers,
   Peter

> Signed-off-by: Niels Ole Salscheider <niels_...@salscheider-online.de>
> ---
>  src/XListDev.c | 17 +++++++++++++----
>  1 file changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git a/src/XListDev.c b/src/XListDev.c
> index d0c6bf2..f47ad97 100644
> --- a/src/XListDev.c
> +++ b/src/XListDev.c
> @@ -189,8 +189,10 @@ XListInputDevices(
>      XExtDisplayInfo *info = XInput_find_display(dpy);
>  
>      LockDisplay(dpy);
> -    if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1)
> +    if (_XiCheckExtInit(dpy, XInput_Initial_Release, info) == -1) {
> +     *ndevices = 0;
>       return ((XDeviceInfo *) NULL);
> +    }
>  
>      GetReq(ListInputDevices, req);
>      req->reqType = info->codes->major_opcode;
> @@ -199,6 +201,7 @@ XListInputDevices(
>      if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
>       UnlockDisplay(dpy);
>       SyncHandle();
> +     *ndevices = 0;
>       return (XDeviceInfo *) NULL;
>      }
>  
> @@ -212,6 +215,7 @@ XListInputDevices(
>           _XEatDataWords(dpy, rep.length);
>           UnlockDisplay(dpy);
>           SyncHandle();
> +         *ndevices = 0;
>           return (XDeviceInfo *) NULL;
>       }
>       _XRead(dpy, (char *)list, rlen);
> @@ -220,15 +224,19 @@ XListInputDevices(
>       sav_any = any;
>       end = (char *)list + rlen;
>       for (i = 0; i < *ndevices; i++, list++) {
> -            if(SizeClassInfo(&any, end - (char *)any, 
> (int)list->num_classes, &s))
> -                goto out;
> +            if(SizeClassInfo(&any, end - (char *)any, 
> (int)list->num_classes, &s)) {
> +             *ndevices = 0;
> +             goto out;
> +            }
>              size += s;
>       }
>  
>       Nptr = ((unsigned char *)list) + rlen;
>       for (i = 0, nptr = (unsigned char *)any; i < *ndevices; i++) {
> -         if (nptr >= Nptr)
> +         if (nptr >= Nptr) {
> +             *ndevices = 0;
>               goto out;
> +            }
>           size += *nptr + 1;
>           nptr += (*nptr + 1);
>       }
> @@ -238,6 +246,7 @@ XListInputDevices(
>           XFree((char *)slist);
>           UnlockDisplay(dpy);
>           SyncHandle();
> +         *ndevices = 0;
>           return (XDeviceInfo *) NULL;
>       }
>       sclist = clist;
> -- 
> 2.10.1
_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to