mirror of
https://github.com/X11Libre/xserver.git
synced 2026-04-14 17:18:09 +00:00
XkbCopyKeymap was mangling doodads and overlays
This commit is contained in:
@@ -1796,6 +1796,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
|
||||
dsection = dst->geom->sections;
|
||||
i < src->geom->num_sections;
|
||||
i++, ssection++, dsection++) {
|
||||
*dsection = *ssection;
|
||||
if (ssection->num_rows) {
|
||||
tmp = xcalloc(ssection->num_rows, sizeof(XkbRowRec));
|
||||
if (!tmp)
|
||||
@@ -1830,6 +1831,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
|
||||
dsection->doodads = NULL;
|
||||
}
|
||||
|
||||
dsection->sz_doodads = ssection->num_doodads;
|
||||
for (k = 0,
|
||||
sdoodad = ssection->doodads,
|
||||
ddoodad = dsection->doodads;
|
||||
@@ -1850,8 +1852,9 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
|
||||
}
|
||||
ddoodad->any.type = sdoodad->any.type;
|
||||
}
|
||||
dsection->num_doodads = ssection->num_doodads;
|
||||
dsection->sz_doodads = ssection->num_doodads;
|
||||
dsection->overlays = NULL;
|
||||
dsection->sz_overlays = 0;
|
||||
dsection->num_overlays = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user