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:
parent
1e4412abc4
commit
1cd894173e
|
@ -192,16 +192,8 @@ char *buf = NULL, keymap[PATH_MAX],xkm_output_dir[PATH_MAX];
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
char tmpname[PATH_MAX];
|
char tmpname[PATH_MAX];
|
||||||
#endif
|
#endif
|
||||||
if ((names->keymap==NULL)||(names->keymap[0]=='\0')) {
|
|
||||||
sprintf(keymap,"server-%s",display);
|
snprintf(keymap, sizeof(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);
|
|
||||||
}
|
|
||||||
|
|
||||||
XkbEnsureSafeMapName(keymap);
|
XkbEnsureSafeMapName(keymap);
|
||||||
OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
|
OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
|
||||||
|
|
Loading…
Reference in New Issue