Handle arbitrary length data in the same fashion as other calls,
avoiding need to ensure it fits all in the request buffer.

Signed-off-by: Alan Coopersmith <[email protected]>
---
 src/ModMap.c |   12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/src/ModMap.c b/src/ModMap.c
index 836a676..2fabc56 100644
--- a/src/ModMap.c
+++ b/src/ModMap.c
@@ -79,17 +79,11 @@ XSetModifierMapping(
     int         mapSize = modifier_map->max_keypermod << 3;    /* 8 modifiers 
*/
 
     LockDisplay(dpy);
-    GetReqExtra(SetModifierMapping, mapSize, req);
-    if (!req) {
-       UnlockDisplay(dpy);
-       return MappingFailed;
-    }
-
+    GetReq(SetModifierMapping, req);
+    req->length += mapSize >> 2;
     req->numKeyPerModifier = modifier_map->max_keypermod;
 
-    memcpy((char *) NEXTPTR(req,xSetModifierMappingReq),
-          (char *) modifier_map->modifiermap,
-          mapSize);
+    Data(dpy, modifier_map->modifiermap, mapSize);
 
     (void) _XReply(dpy, (xReply *) & rep,
        (SIZEOF(xSetModifierMappingReply) - SIZEOF(xReply)) >> 2, xTrue);
-- 
1.7.9.2

_______________________________________________
[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