mirror of
https://github.com/X11Libre/xserver.git
synced 2026-03-24 14:34:29 +00:00
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>
This commit is contained in:
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user