From 1e793e9ece510346b9b8e3c8a259c8032d06d179 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Mon, 29 Jul 2024 19:52:46 +0200 Subject: [PATCH] (!1794) randr: ProcRRListOutputProperties(): use SwapShort()/SwapLong() Simplify reply payload preparation and sendout by using SwapShort() and SwapLong() instead of WriteToClientSwapped() and callbacks. This also allows even further simplifications by using generic macros for the request send path. Signed-off-by: Enrico Weigelt, metux IT consult --- randr/rrproperty.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/randr/rrproperty.c b/randr/rrproperty.c index f381e4df0b..03cb29f02b 100644 --- a/randr/rrproperty.c +++ b/randr/rrproperty.c @@ -416,7 +416,6 @@ int ProcRRListOutputProperties(ClientPtr client) { REQUEST(xRRListOutputPropertiesReq); - Atom *pAtoms = NULL; int numProps = 0; RROutputPtr output; RRPropertyPtr prop; @@ -427,9 +426,6 @@ ProcRRListOutputProperties(ClientPtr client) for (prop = output->properties; prop; prop = prop->next) numProps++; - if (numProps) - if (!(pAtoms = xallocarray(numProps, sizeof(Atom)))) - return BadAlloc; xRRListOutputPropertiesReply rep = { .type = X_Reply, @@ -442,7 +438,8 @@ ProcRRListOutputProperties(ClientPtr client) swapl(&rep.length); swaps(&rep.nAtoms); } - WriteToClient(client, sizeof(xRRListOutputPropertiesReply), &rep); + + Atom pAtoms[numProps]; if (numProps) { /* Copy property name atoms to reply buffer */ @@ -450,10 +447,12 @@ ProcRRListOutputProperties(ClientPtr client) for (prop = output->properties; prop; prop = prop->next) *temppAtoms++ = prop->propertyName; - client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write; - WriteSwappedDataToClient(client, numProps * sizeof(Atom), pAtoms); - free(pAtoms); + if (client->swapped) SwapLongs(pAtoms, numProps); } + + WriteToClient(client, sizeof(xRRListOutputPropertiesReply), &rep); + WriteToClient(client, sizeof(pAtoms), pAtoms); + return Success; }