diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-07-08 06:58:37 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-07-08 06:58:37 -0700 |
commit | eec582cdb351530131d2ae30376eca2771f78e49 (patch) | |
tree | fbd791cf3f0ff9b9f1f38649f21ff4ed69877904 | |
parent | 8da90498684e5dc90870601dc520d8597e09788d (diff) | |
download | cygnal-eec582cdb351530131d2ae30376eca2771f78e49.tar.gz cygnal-eec582cdb351530131d2ae30376eca2771f78e49.tar.bz2 cygnal-eec582cdb351530131d2ae30376eca2771f78e49.zip |
Small fixes in get_cmd_exe_path.
* winsup/cygwin/spawn.cc (init_cmd_exe_path): Restructure code
to initialize rather than assign nchars. Include backslash in
cmd.exe name; then it can be omitted from the size calculation
and sprintf. Do not allocate an excess byte for the string.
Thanks to user forsvarir of the code review stackechange.
Also reformatted to the GNU style used inside Cygwin.
(init_cmd_exe_path): Remove spurious whitespace.
-rw-r--r-- | winsup/cygwin/spawn.cc | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index d611b2cd0..c15f6fbf8 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -1218,23 +1218,25 @@ err: static const char *cmd_exe_path = NULL; -static void init_cmd_exe_path(void) +static void +init_cmd_exe_path(void) { char sysdir[NT_MAX_PATH]; - char cmdname[] = "cmd.exe"; - unsigned int nchars; - - if ((nchars = GetSystemDirectoryA(sysdir, sizeof sysdir)) < sizeof sysdir) { - unsigned int total = nchars + 1 + sizeof cmdname + 1; - char *path = static_cast<char *>(cmalloc_abort(HEAP_STR, total)); - snprintf(path, total, "%s\\%s", sysdir, cmdname); - cmd_exe_path = path; - } + char cmdname[] = "\\cmd.exe"; + unsigned int nchars = GetSystemDirectoryA(sysdir, sizeof sysdir); + + if (nchars < sizeof sysdir) + { + unsigned int total = nchars + sizeof cmdname; + char *path = static_cast<char *>(cmalloc_abort(HEAP_STR, total)); + snprintf(path, total, "%s%s", sysdir, cmdname); + cmd_exe_path = path; + } } const char *get_cmd_exe_path() { static pthread_once_t cmd_exe_once = PTHREAD_ONCE_INIT; - pthread_once (&cmd_exe_once, init_cmd_exe_path); + pthread_once(&cmd_exe_once, init_cmd_exe_path); return cmd_exe_path; } |