On Tue, Jun 11, 2013 at 01:42:36PM -0400, Peter Harris wrote:
> XCloseDevice frees the device parameter, even if it references an
> invalid device. Therefore, the device parameter must not be on the stack.
> 
> Since xts5/XI does not clean up the devices created by
> Setup_Extension_DeviceInfo, it is safe to XCloseDevice "device".
> 
> Signed-off-by: Peter Harris <[email protected]>
> ---
>  xts5/XI/ChangePointerDevice.m |   55 
> ++++++++++++++++++++---------------------
>  1 file changed, 27 insertions(+), 28 deletions(-)
> 
> diff --git a/xts5/XI/ChangePointerDevice.m b/xts5/XI/ChangePointerDevice.m
> index d203f6e..c7cb55f 100644
> --- a/xts5/XI/ChangePointerDevice.m
> +++ b/xts5/XI/ChangePointerDevice.m
> @@ -415,7 +415,6 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     device = &bogus;
>       XCloseDevice(display, device);

I'd probably add the second part of the commit message here as comment, but
either way
Reviewed-by: Peter Hutterer <[email protected]>

Cheers,
   Peter



>       XSync(display,0);
>       if (geterr() == baddevice)
> @@ -426,7 +425,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XSetDeviceMode(display, device, Absolute);
> +     XSetDeviceMode(display, &bogus, Absolute);
>       XSync(display,0);
>       if (geterr() == baddevice)
>               {
> @@ -436,7 +435,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XGetDeviceMotionEvents(display, device, CurrentTime, CurrentTime,
> +     XGetDeviceMotionEvents(display, &bogus, CurrentTime, CurrentTime,
>           &nevents, &mode, &evcount);
>       if (geterr() == baddevice)
>               {
> @@ -446,7 +445,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XChangeKeyboardDevice(display, device);
> +     XChangeKeyboardDevice(display, &bogus);
>       XSync(display,0);
>       if (geterr() == baddevice)
>               {
> @@ -456,7 +455,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XChangePointerDevice(display, device, 0, 1);
> +     XChangePointerDevice(display, &bogus, 0, 1);
>       XSync(display,0);
>       if (geterr() == baddevice)
>               {
> @@ -466,7 +465,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XGrabDevice(display, device, w, True, 1, &devicemotionnotifyclass,
> +     XGrabDevice(display, &bogus, w, True, 1, &devicemotionnotifyclass,
>          GrabModeAsync, GrabModeAsync, CurrentTime);
>       if (geterr() == baddevice)
>               {
> @@ -476,7 +475,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XUngrabDevice(display, device, CurrentTime);
> +     XUngrabDevice(display, &bogus, CurrentTime);
>       XSync(display,0);
>       if (geterr() == baddevice)
>               {
> @@ -486,7 +485,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XGrabDeviceKey(display, device, AnyKey, AnyModifier, NULL, 
> +     XGrabDeviceKey(display, &bogus, AnyKey, AnyModifier, NULL,
>          w, True, 0, NULL, GrabModeAsync, GrabModeAsync);
>       if (geterr() == baddevice)
>               {
> @@ -496,7 +495,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XUngrabDeviceKey(display, device, AnyKey, AnyModifier, NULL, w);
> +     XUngrabDeviceKey(display, &bogus, AnyKey, AnyModifier, NULL, w);
>       XSync(display,0);
>  
>       if (geterr() == baddevice)
> @@ -507,7 +506,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XGrabDeviceButton(display, device, AnyButton, AnyModifier, NULL, 
> +     XGrabDeviceButton(display, &bogus, AnyButton, AnyModifier, NULL,
>          w, True, 0, NULL, GrabModeAsync, GrabModeAsync);
>       if (geterr() == baddevice)
>               {
> @@ -517,7 +516,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XUngrabDeviceButton(display, device, AnyButton, AnyModifier, NULL, w);
> +     XUngrabDeviceButton(display, &bogus, AnyButton, AnyModifier, NULL, w);
>       XSync(display,0);
>       if (geterr() == baddevice)
>               {
> @@ -527,7 +526,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XAllowDeviceEvents(display, device, AsyncAll, CurrentTime);
> +     XAllowDeviceEvents(display, &bogus, AsyncAll, CurrentTime);
>       XSync(display,0);
>       if (geterr() == baddevice)
>               {
> @@ -537,7 +536,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XGetDeviceFocus(display, device, &focus, &revert, &time);
> +     XGetDeviceFocus(display, &bogus, &focus, &revert, &time);
>       if (geterr() == baddevice)
>               {
>               CHECK;
> @@ -546,7 +545,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XSetDeviceFocus(display, device, None, RevertToNone, CurrentTime);
> +     XSetDeviceFocus(display, &bogus, None, RevertToNone, CurrentTime);
>       XSync(display,0);
>       if (geterr() == baddevice)
>               {
> @@ -556,7 +555,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XGetFeedbackControl(display, device, &nfeed);
> +     XGetFeedbackControl(display, &bogus, &nfeed);
>       if (geterr() == baddevice)
>               {
>               CHECK;
> @@ -568,7 +567,7 @@ XDevice bogus;
>       feedctl.class = KbdFeedbackClass;
>       feedctl.percent = 0;
>       mask = DvPercent;
> -     XChangeFeedbackControl(display, device, mask, (XFeedbackControl*) 
> &feedctl);
> +     XChangeFeedbackControl(display, &bogus, mask, (XFeedbackControl*) 
> &feedctl);
>       XSync(display,0);
>       if (geterr() == baddevice)
>               {
> @@ -578,7 +577,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XGetDeviceKeyMapping(display, device, MinKeyCode, 1, &ksyms_per);
> +     XGetDeviceKeyMapping(display, &bogus, MinKeyCode, 1, &ksyms_per);
>       if (geterr() == baddevice)
>               {
>               CHECK;
> @@ -587,7 +586,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XChangeDeviceKeyMapping(display, device, MinKeyCode, 1, &ksyms, 1);
> +     XChangeDeviceKeyMapping(display, &bogus, MinKeyCode, 1, &ksyms, 1);
>       XSync(display,0);
>       if (geterr() == baddevice)
>               {
> @@ -597,7 +596,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XGetDeviceModifierMapping(display, device);
> +     XGetDeviceModifierMapping(display, &bogus);
>       if (geterr() == baddevice)
>               {
>               CHECK;
> @@ -606,7 +605,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XSetDeviceModifierMapping(display, device, modmap);
> +     XSetDeviceModifierMapping(display, &bogus, modmap);
>       XSync(display,0);
>       if (geterr() == baddevice)
>               {
> @@ -616,7 +615,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XGetDeviceButtonMapping(display, device, bmap, 8);
> +     XGetDeviceButtonMapping(display, &bogus, bmap, 8);
>       if (geterr() == baddevice)
>               {
>               CHECK;
> @@ -625,7 +624,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XSetDeviceButtonMapping(display, device, bmap, 8);
> +     XSetDeviceButtonMapping(display, &bogus, bmap, 8);
>       XSync(display,0);
>       if (geterr() == baddevice)
>               {
> @@ -635,7 +634,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XQueryDeviceState(display, device);
> +     XQueryDeviceState(display, &bogus);
>       if (geterr() == baddevice)
>               {
>               CHECK;
> @@ -644,7 +643,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XSetDeviceValuators(display, device, &valuators, 0, 1);
> +     XSetDeviceValuators(display, &bogus, &valuators, 0, 1);
>       XSync(display,0);
>       if (geterr() == baddevice)
>               {
> @@ -654,7 +653,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XDeviceBell(display, device, 0, 0, 100);
> +     XDeviceBell(display, &bogus, 0, 0, 100);
>       XSync(display,0);
>       if (geterr() == baddevice)
>               {
> @@ -664,7 +663,7 @@ XDevice bogus;
>       else
>               FAIL;
>  
> -     XGetDeviceControl(display, device, DEVICE_RESOLUTION);
> +     XGetDeviceControl(display, &bogus, DEVICE_RESOLUTION);
>       if (geterr() == baddevice)
>               {
>               CHECK;
> @@ -678,7 +677,7 @@ XDevice bogus;
>       dctl.num_valuators=1;
>       dctl.first_valuator=0;
>       dctl.resolutions = &valuators;
> -     XChangeDeviceControl(display, device, DEVICE_RESOLUTION, 
> (XDeviceControl*) &dctl);
> +     XChangeDeviceControl(display, &bogus, DEVICE_RESOLUTION, 
> (XDeviceControl*) &dctl);
>       XSync(display,0);
>       if (geterr() == baddevice)
>               {
> @@ -689,7 +688,7 @@ XDevice bogus;
>               FAIL;
>  
>       ev.type = devicemotionnotify;
> -     XSendExtensionEvent(display, device, PointerWindow, True, 0, NULL,
> +     XSendExtensionEvent(display, &bogus, PointerWindow, True, 0, NULL,
>           &ev);
>       XSync(display,0);
>       if (geterr() == baddevice)
> -- 
> 1.7.10.4
> 
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to