From: =?UTF-8?q?Matthias=20A=C3=9Fhauer?= <mha1993@xxxxxxx> since 5e1f28d206 (bisect--helper: reimplement `bisect_visualize()` shell function in C, 2021-09-13) `git bisect visualize` uses exists_in_PATH() to check wether it should call `gitk`, but exists_in_PATH() relies on locate_in_PATH() which currently only understands POSIX-ish PATH variables (a list of paths, separated by colons) on native Windows executables we encounter Windows PATH variables (a list of paths that often contain drive letters (and thus colons), separated by semicolons). Luckily we do already have a function that can lookup executables on windows PATHs: mingw_path_lookup(). Teach locate_in_PATH() to use mingw_path_lookup() on Windows. Reported-by: Louis Strous <Louis.Strous@xxxxxxxxxxxxxxxx> Signed-off-by: Matthias Aßhauer <mha1993@xxxxxxx> --- run-command.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/run-command.c b/run-command.c index 60c94198664..8f518e37e27 100644 --- a/run-command.c +++ b/run-command.c @@ -182,13 +182,10 @@ int is_executable(const char *name) * Returns the path to the command, as found in $PATH or NULL if the * command could not be found. The caller inherits ownership of the memory * used to store the resultant path. - * - * This should not be used on Windows, where the $PATH search rules - * are more complicated (e.g., a search for "foo" should find - * "foo.exe"). */ static char *locate_in_PATH(const char *file) { +#ifndef GIT_WINDOWS_NATIVE const char *p = getenv("PATH"); struct strbuf buf = STRBUF_INIT; @@ -217,6 +214,9 @@ static char *locate_in_PATH(const char *file) strbuf_release(&buf); return NULL; +#else + return mingw_path_lookup(file,0); +#endif } int exists_in_PATH(const char *command) -- gitgitgadget