mirror of
https://github.com/X11Libre/xserver.git
synced 2026-04-14 17:18:09 +00:00
xkb: ProcXkbGetKbdByName(): rename child buffers to childbuf
rename them to indicate that they're not the global payload buffer, but temporary childs for sub-replies. Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
committed by
Enrico Weigelt
parent
d09b3dae3e
commit
eb9a9e0708
99
xkb/xkb.c
99
xkb/xkb.c
@@ -5684,7 +5684,6 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||
if (new == NULL)
|
||||
reported = 0;
|
||||
|
||||
int payload_length = 0;
|
||||
Bool loaded = 0;
|
||||
|
||||
stuff->want |= stuff->need;
|
||||
@@ -5735,7 +5734,6 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||
mrep.nVModMapKeys = XkbNumKeys(new);
|
||||
}
|
||||
XkbComputeGetMapReplySize(new, &mrep);
|
||||
payload_length += SIZEOF(xGenericReply) / 4 + mrep.length;
|
||||
}
|
||||
if (new->compat == NULL)
|
||||
reported &= ~XkbGBN_CompatMapMask;
|
||||
@@ -5744,7 +5742,6 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||
crep.groups = XkbAllGroupsMask;
|
||||
crep.nSI = crep.nTotalSI = new->compat->num_si;
|
||||
XkbComputeGetCompatMapReplySize(new->compat, &crep);
|
||||
payload_length += SIZEOF(xGenericReply) / 4 + crep.length;
|
||||
}
|
||||
if (new->indicators == NULL)
|
||||
reported &= ~XkbGBN_IndicatorMapMask;
|
||||
@@ -5752,7 +5749,6 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||
irep.deviceID = dev->id;
|
||||
irep.which = XkbAllIndicatorsMask;
|
||||
XkbComputeGetIndicatorMapReplySize(new->indicators, &irep);
|
||||
payload_length += SIZEOF(xGenericReply) / 4 + irep.length;
|
||||
}
|
||||
if (new->names == NULL)
|
||||
reported &= ~(XkbGBN_OtherNamesMask | XkbGBN_KeyNamesMask);
|
||||
@@ -5781,7 +5777,6 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||
nrep.which &= ~(XkbKeyNamesMask | XkbKeyAliasesMask);
|
||||
}
|
||||
XkbComputeGetNamesReplySize(new, &nrep);
|
||||
payload_length += SIZEOF(xGenericReply) / 4 + nrep.length;
|
||||
}
|
||||
if (new->geom == NULL)
|
||||
reported &= ~XkbGBN_GeometryMask;
|
||||
@@ -5789,48 +5784,36 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||
grep.deviceID = dev->id;
|
||||
grep.found = TRUE;
|
||||
XkbComputeGetGeometryReplySize(new->geom, &grep, None);
|
||||
payload_length += SIZEOF(xGenericReply) / 4 + grep.length;
|
||||
}
|
||||
}
|
||||
|
||||
xkbGetKbdByNameReply rep = {
|
||||
.type = X_Reply,
|
||||
.deviceID = dev->id,
|
||||
.sequenceNumber = client->sequence,
|
||||
.minKeyCode = xkb->min_key_code,
|
||||
.maxKeyCode = xkb->max_key_code,
|
||||
.reported = reported,
|
||||
.found = found,
|
||||
.loaded = loaded,
|
||||
.length = payload_length,
|
||||
};
|
||||
|
||||
char *payload_buffer = calloc(1, payload_length * 4);
|
||||
if (!payload_buffer)
|
||||
return BadAlloc;
|
||||
|
||||
char *payload_walk = payload_buffer;
|
||||
|
||||
if (client->swapped) {
|
||||
swaps(&rep.sequenceNumber);
|
||||
swapl(&rep.length);
|
||||
swaps(&rep.found);
|
||||
swaps(&rep.reported);
|
||||
}
|
||||
|
||||
x_rpcbuf_t rpcbuf = { .swapped = client->swapped, .err_clear = TRUE };
|
||||
|
||||
if (reported & (XkbGBN_SymbolsMask | XkbGBN_TypesMask)) {
|
||||
x_rpcbuf_t rpcbuf = { .swapped = client->swapped, .err_clear = TRUE };
|
||||
x_rpcbuf_t childbuf = { .swapped = client->swapped, .err_clear = TRUE };
|
||||
|
||||
XkbAssembleMap(client, new, mrep, &rpcbuf);
|
||||
XkbAssembleMap(client, new, mrep, &childbuf);
|
||||
|
||||
if (rpcbuf.error) {
|
||||
free(payload_buffer);
|
||||
if (childbuf.error)
|
||||
return BadAlloc;
|
||||
}
|
||||
|
||||
if (rpcbuf.wpos != (mrep.length * 4))
|
||||
if (childbuf.wpos != (mrep.length * 4))
|
||||
LogMessage(X_WARNING, "ProcXkbGetKbdByName() childbuf size (%ld) mismatch mrep size (%ld // %d units)\n",
|
||||
(unsigned long)rpcbuf.wpos, (unsigned long)mrep.length * 4, mrep.length);
|
||||
(unsigned long)childbuf.wpos, (unsigned long)mrep.length * 4, mrep.length);
|
||||
|
||||
if (client->swapped) {
|
||||
swaps(&mrep.sequenceNumber);
|
||||
@@ -5840,21 +5823,18 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||
swaps(&mrep.totalActs);
|
||||
}
|
||||
|
||||
memcpy(payload_walk, &mrep, sizeof(mrep));
|
||||
payload_walk += sizeof(mrep);
|
||||
memcpy(payload_walk, rpcbuf.buffer, rpcbuf.wpos);
|
||||
payload_walk += rpcbuf.wpos;
|
||||
x_rpcbuf_clear(&rpcbuf);
|
||||
x_rpcbuf_write_binary_pad(&rpcbuf, &mrep, sizeof(mrep));
|
||||
x_rpcbuf_write_rpcbuf_pad(&rpcbuf, &childbuf);
|
||||
}
|
||||
|
||||
if (reported & XkbGBN_CompatMapMask) {
|
||||
x_rpcbuf_t rpcbuf = { .swapped = client->swapped, .err_clear = TRUE };
|
||||
x_rpcbuf_t childbuf = { .swapped = client->swapped, .err_clear = TRUE };
|
||||
|
||||
XkbAssembleCompatMap(client, new->compat, crep, &rpcbuf);
|
||||
XkbAssembleCompatMap(client, new->compat, crep, &childbuf);
|
||||
|
||||
if (rpcbuf.wpos != (crep.length * 4))
|
||||
if (childbuf.wpos != (crep.length * 4))
|
||||
LogMessage(X_WARNING, "ProcXkbGetKbdByName() childbuf size (%ld) mismatch crep size (%ld // %d units)\n",
|
||||
(unsigned long)rpcbuf.wpos, (unsigned long)crep.length * 4, crep.length);
|
||||
(unsigned long)childbuf.wpos, (unsigned long)crep.length * 4, crep.length);
|
||||
|
||||
if (client->swapped) {
|
||||
swaps(&crep.sequenceNumber);
|
||||
@@ -5864,26 +5844,21 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||
swaps(&crep.nTotalSI);
|
||||
}
|
||||
|
||||
memcpy(payload_walk, &crep, sizeof(crep));
|
||||
payload_walk += sizeof(crep);
|
||||
memcpy(payload_walk, rpcbuf.buffer, rpcbuf.wpos);
|
||||
payload_walk += rpcbuf.wpos;
|
||||
x_rpcbuf_clear(&rpcbuf);
|
||||
x_rpcbuf_write_binary_pad(&rpcbuf, &crep, sizeof(crep));
|
||||
x_rpcbuf_write_rpcbuf_pad(&rpcbuf, &childbuf);
|
||||
}
|
||||
|
||||
if (reported & XkbGBN_IndicatorMapMask) {
|
||||
x_rpcbuf_t rpcbuf = { .swapped = client->swapped, .err_clear = TRUE };
|
||||
x_rpcbuf_t childbuf = { .swapped = client->swapped, .err_clear = TRUE };
|
||||
|
||||
XkbAssembleIndicatorMap(client, new->indicators, irep, &rpcbuf);
|
||||
XkbAssembleIndicatorMap(client, new->indicators, irep, &childbuf);
|
||||
|
||||
if (rpcbuf.error) {
|
||||
free(payload_buffer);
|
||||
if (childbuf.error)
|
||||
return BadAlloc;
|
||||
}
|
||||
|
||||
if (rpcbuf.wpos != (irep.length * 4))
|
||||
if (childbuf.wpos != (irep.length * 4))
|
||||
LogMessage(X_WARNING, "ProcXkbGetKbdByName() childbuf size (%ld) mismatch irep size (%ld // %d units)\n",
|
||||
(unsigned long)rpcbuf.wpos, (unsigned long)irep.length * 4, irep.length);
|
||||
(unsigned long)childbuf.wpos, (unsigned long)irep.length * 4, irep.length);
|
||||
|
||||
if (client->swapped) {
|
||||
swaps(&irep.sequenceNumber);
|
||||
@@ -5892,21 +5867,18 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||
swapl(&irep.realIndicators);
|
||||
}
|
||||
|
||||
memcpy(payload_walk, &irep, sizeof(irep));
|
||||
payload_walk += sizeof(irep);
|
||||
memcpy(payload_walk, rpcbuf.buffer, rpcbuf.wpos);
|
||||
payload_walk += rpcbuf.wpos;
|
||||
x_rpcbuf_clear(&rpcbuf);
|
||||
x_rpcbuf_write_binary_pad(&rpcbuf, &irep, sizeof(irep));
|
||||
x_rpcbuf_write_rpcbuf_pad(&rpcbuf, &childbuf);
|
||||
}
|
||||
|
||||
if (reported & (XkbGBN_KeyNamesMask | XkbGBN_OtherNamesMask)) {
|
||||
x_rpcbuf_t rpcbuf = { .swapped = client->swapped, .err_clear = TRUE };
|
||||
x_rpcbuf_t childbuf = { .swapped = client->swapped, .err_clear = TRUE };
|
||||
|
||||
XkbAssembleNames(client, new, nrep, &rpcbuf);
|
||||
XkbAssembleNames(client, new, nrep, &childbuf);
|
||||
|
||||
if (rpcbuf.wpos != (nrep.length * 4))
|
||||
if (childbuf.wpos != (nrep.length * 4))
|
||||
LogMessage(X_WARNING, "ProcXkbGetKbdByName() childbuf size (%ld) mismatch nrep size (%ld // %d units)\n",
|
||||
(unsigned long)rpcbuf.wpos, (unsigned long)nrep.length * 4, nrep.length);
|
||||
(unsigned long)childbuf.wpos, (unsigned long)nrep.length * 4, nrep.length);
|
||||
|
||||
if (client->swapped) {
|
||||
swaps(&nrep.sequenceNumber);
|
||||
@@ -5916,11 +5888,8 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||
swapl(&nrep.indicators);
|
||||
}
|
||||
|
||||
memcpy(payload_walk, &nrep, sizeof(nrep));
|
||||
payload_walk += sizeof(nrep);
|
||||
memcpy(payload_walk, rpcbuf.buffer, rpcbuf.wpos);
|
||||
payload_walk += rpcbuf.wpos;
|
||||
x_rpcbuf_clear(&rpcbuf);
|
||||
x_rpcbuf_write_binary_pad(&rpcbuf, &nrep, sizeof(nrep));
|
||||
x_rpcbuf_write_rpcbuf_pad(&rpcbuf, &childbuf);
|
||||
}
|
||||
|
||||
if (reported & XkbGBN_GeometryMask) {
|
||||
@@ -5942,17 +5911,11 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||
swaps(&grep.nKeyAliases);
|
||||
}
|
||||
|
||||
memcpy(payload_walk, &grep, sizeof(grep));
|
||||
payload_walk += sizeof(grep);
|
||||
memcpy(payload_walk, childbuf.buffer, childbuf.wpos);
|
||||
payload_walk += childbuf.wpos;
|
||||
x_rpcbuf_clear(&childbuf);
|
||||
x_rpcbuf_write_binary_pad(&rpcbuf, &grep, sizeof(grep));
|
||||
x_rpcbuf_write_rpcbuf_pad(&rpcbuf, &childbuf);
|
||||
}
|
||||
|
||||
WriteToClient(client, sizeof(xkbGetKbdByNameReply), &rep);
|
||||
WriteToClient(client, payload_length * 4, payload_buffer);
|
||||
|
||||
free(payload_buffer);
|
||||
X_SEND_REPLY_WITH_RPCBUF(client, rep, rpcbuf);
|
||||
|
||||
if (loaded) {
|
||||
XkbDescPtr old_xkb;
|
||||
|
||||
Reference in New Issue
Block a user