xserver: Branch 'master'

Keith Packard keithp at kemper.freedesktop.org
Mon Mar 10 21:29:27 PDT 2008


 xkb/xkbUtils.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

New commits:
commit b2657ec5981122e7cc0bda0d8802aec63cde9014
Author: Keith Packard <keithp at keithp.com>
Date:   Wed Feb 6 16:51:57 2008 -0800

    XkbCopyKeymap was mangling doodads and overlays

diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
index b313270..a3ae655 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -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 {


More information about the xorg-commit mailing list