XkbCopyKeymap was mangling doodads and overlays
This commit is contained in:
		
							parent
							
								
									ab9b0b36ac
								
							
						
					
					
						commit
						b2657ec598
					
				| 
						 | 
				
			
			@ -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 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue