>From ba5aed47f241ada8c73b61b3d5e18a1c2ccd268a Mon Sep 17 00:00:00 2001
From: Alan Coopersmith <alan.coopersmith@sun.com>
Date: Wed, 19 Nov 2008 13:44:26 -0800
Subject: [PATCH] Always use server-<display>.xkm to avoid races when multiple servers start

Previously each server starting ran xkbcomp with the output set to
<keymapname>.xkm, read it, then deleted it - which led to races if
two servers were starting at the same time with the same keymap.

Sun bug #6773816 Xorg uses the same xkm output file for compiled keymap file
  <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6773816>
---
 xkb/ddxLoad.c |   12 ++----------
 1 files changed, 2 insertions(+), 10 deletions(-)

diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c
index fc49d99..80da963 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -192,16 +192,8 @@ char	*buf = NULL, keymap[PATH_MAX],xkm_output_dir[PATH_MAX];
 #ifdef WIN32
 char tmpname[PATH_MAX];
 #endif    
-    if ((names->keymap==NULL)||(names->keymap[0]=='\0')) {
-	sprintf(keymap,"server-%s",display);
-    }
-    else {
-	if (strlen(names->keymap) > PATH_MAX - 1) {
-	    ErrorF("[xkb] name of keymap (%s) exceeds max length\n", names->keymap);
-	    return False;
-	}
-	strcpy(keymap,names->keymap);
-    }
+
+    snprintf(keymap, sizeof(keymap), "server-%s", display);
 
     XkbEnsureSafeMapName(keymap);
     OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
-- 
1.5.6.5

