summaryrefslogtreecommitdiff
path: root/xc/lib/Xi
diff options
context:
space:
mode:
authorrws <empty>1993-02-25 15:12:12 +0000
committerrws <empty>1993-02-25 15:12:12 +0000
commit2706f912d209c0ce2d54d4e5af06bc416349cc8d (patch)
tree1f414a684885167b83533e7024f9acc7277eeed0 /xc/lib/Xi
parent5fa68e39c57a0ed95b77aa2dd991857500586141 (diff)
may get back an odd number of number of classes
in that case, need to each the padding for the reply
Diffstat (limited to 'xc/lib/Xi')
-rw-r--r--xc/lib/Xi/XOpenDev.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/xc/lib/Xi/XOpenDev.c b/xc/lib/Xi/XOpenDev.c
index dd8e467fc..a696817cd 100644
--- a/xc/lib/Xi/XOpenDev.c
+++ b/xc/lib/Xi/XOpenDev.c
@@ -1,4 +1,4 @@
-/* $XConsortium: XOpenDev.c,v 1.7 92/01/26 15:33:02 rws Exp $ */
+/* $XConsortium: XOpenDev.c,v 1.8 93/01/28 19:35:50 rws Exp $ */
/************************************************************
Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, California, and the
@@ -41,7 +41,7 @@ XDevice
register Display *dpy;
register XID id;
{
- register long rlen;
+ register long rlen; /* raw length */
xOpenDeviceReq *req;
xOpenDeviceReply rep;
XDevice *dev;
@@ -68,10 +68,16 @@ XDevice
sizeof (XInputClassInfo));
if (dev)
{
+ int dlen; /* data length */
+
dev->device_id = req->deviceid;
dev->num_classes = rep.num_classes;
dev->classes = (XInputClassInfo *) ((char *) dev + sizeof (XDevice));
- _XRead (dpy, dev->classes, (rep.num_classes * sizeof(xInputClassInfo)));
+ dlen = rep.num_classes * sizeof(xInputClassInfo);
+ _XRead (dpy, dev->classes, dlen);
+ /* could be padding that we still need to eat (yummy!) */
+ if(rlen - dlen > 0)
+ _XEatData (dpy, (unsigned long) rlen - dlen);
}
else
_XEatData (dpy, (unsigned long) rlen);