diff options
author | rws <empty> | 1993-02-25 15:12:12 +0000 |
---|---|---|
committer | rws <empty> | 1993-02-25 15:12:12 +0000 |
commit | 2706f912d209c0ce2d54d4e5af06bc416349cc8d (patch) | |
tree | 1f414a684885167b83533e7024f9acc7277eeed0 /xc/lib/Xi | |
parent | 5fa68e39c57a0ed95b77aa2dd991857500586141 (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.c | 12 |
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); |