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 <phar...@opentext.com>
---
 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);
        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

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to