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
