From 316e5e431a3aaa1122083bc2e98f8f6bf7d842f6 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Wed, 16 Jul 2025 01:03:11 +0200 Subject: [PATCH] xkb: use x_rpcbuf_t in XkbWriteKeyBehaviors() As it's caller now has x_rpcbuf, we can use it here, instead of meddling with pre-allocated buffer space directly via raw pointer. Signed-off-by: Enrico Weigelt, metux IT consult --- xkb/xkb.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/xkb/xkb.c b/xkb/xkb.c index ccadcf061c..29342e6a29 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -1206,25 +1206,18 @@ XkbSizeKeyBehaviors(XkbDescPtr xkb, xkbGetMapReply * rep) return len; } -static char * -XkbWriteKeyBehaviors(XkbDescPtr xkb, KeyCode firstKeyBehavior, CARD8 nKeyBehaviors, char *buf) +static void XkbWriteKeyBehaviors(XkbDescPtr xkb, KeyCode firstKeyBehavior, + CARD8 nKeyBehaviors, x_rpcbuf_t *rpcbuf) { - unsigned i; - xkbBehaviorWireDesc *wire; - XkbBehavior *pBhvr; - - wire = (xkbBehaviorWireDesc *) buf; - pBhvr = &xkb->server->behaviors[firstKeyBehavior]; - for (i = 0; i < nKeyBehaviors; i++, pBhvr++) { + XkbBehavior *pBhvr = &xkb->server->behaviors[firstKeyBehavior]; + for (int i = 0; i < nKeyBehaviors; i++, pBhvr++) { if (pBhvr->type != XkbKB_Default) { + xkbBehaviorWireDesc *wire = x_rpcbuf_reserve(rpcbuf, sizeof(xkbBehaviorWireDesc)); wire->key = i + firstKeyBehavior; wire->type = pBhvr->type; wire->data = pBhvr->data; - wire++; } } - buf = (char *) wire; - return buf; } static int @@ -1376,11 +1369,11 @@ static void XkbAssembleMap(ClientPtr client, XkbDescPtr xkb, XkbWriteKeyTypes(xkb, rep.firstType, rep.nTypes, rpcbuf, client); XkbWriteKeySyms(xkb, rep.firstKeySym, rep.nKeySyms, rpcbuf, client); XkbWriteKeyActions(xkb, rep.firstKeyAct, rep.nKeyActs, rpcbuf); + if (rep.totalKeyBehaviors > 0) + XkbWriteKeyBehaviors(xkb, rep.firstKeyBehavior, rep.nKeyBehaviors, rpcbuf); char *desc = rpcbuf->buffer + rpcbuf->wpos; - if (rep.totalKeyBehaviors > 0) - desc = XkbWriteKeyBehaviors(xkb, rep.firstKeyBehavior, rep.nKeyBehaviors, desc); if (rep.virtualMods) { register int sz;