diff options
Diffstat (limited to 'src/xrdb.c')
| -rw-r--r-- | src/xrdb.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/xrdb.c b/src/xrdb.c index 6a16e3260bd..63f06738b98 100644 --- a/src/xrdb.c +++ b/src/xrdb.c | |||
| @@ -426,24 +426,22 @@ get_environ_db (void) | |||
| 426 | { | 426 | { |
| 427 | XrmDatabase db; | 427 | XrmDatabase db; |
| 428 | char *p; | 428 | char *p; |
| 429 | char *path = 0, *home = 0; | 429 | char *path = 0; |
| 430 | const char *host; | ||
| 431 | 430 | ||
| 432 | if ((p = getenv ("XENVIRONMENT")) == NULL) | 431 | if ((p = getenv ("XENVIRONMENT")) == NULL) |
| 433 | { | 432 | { |
| 434 | home = gethomedir (); | 433 | static char const xdefaults[] = ".Xdefaults-"; |
| 435 | host = get_system_name (); | 434 | char *home = gethomedir (); |
| 436 | path = (char *) xmalloc (strlen (home) | 435 | char const *host = get_system_name (); |
| 437 | + sizeof (".Xdefaults-") | 436 | ptrdiff_t pathsize = strlen (home) + sizeof xdefaults + strlen (host); |
| 438 | + strlen (host)); | 437 | path = (char *) xrealloc (home, pathsize); |
| 439 | sprintf (path, "%s%s%s", home, ".Xdefaults-", host); | 438 | strcat (strcat (path, xdefaults), host); |
| 440 | p = path; | 439 | p = path; |
| 441 | } | 440 | } |
| 442 | 441 | ||
| 443 | db = XrmGetFileDatabase (p); | 442 | db = XrmGetFileDatabase (p); |
| 444 | 443 | ||
| 445 | xfree (path); | 444 | xfree (path); |
| 446 | xfree (home); | ||
| 447 | 445 | ||
| 448 | return db; | 446 | return db; |
| 449 | } | 447 | } |