win: executable(): fix relative path bug

Qualified (i.e. dot-prefixed) relative paths should only search CWD, not
$PATH.
This commit is contained in:
erw7
2019-01-17 16:05:57 +09:00
committed by Justin M. Keyes
parent d13803f64f
commit 519b93d236

View File

@@ -242,8 +242,12 @@ bool os_can_exe(const char_u *name, char_u **abspath, bool use_path)
FUNC_ATTR_NONNULL_ARG(1) FUNC_ATTR_NONNULL_ARG(1)
{ {
bool no_path = !use_path || path_is_absolute(name); bool no_path = !use_path || path_is_absolute(name);
#ifndef WIN32 #ifdef WIN32
// If the filename is "qualified" (relative or absolute) do not check $PATH. // If the filename is "qualified" (relative or absolute) do not check $PATH.
no_path |= (name[0] == '.'
&& ((name[1] == '/' || name[1] == '\\')
|| (name[1] == '.' && (name[2] == '/' || name[2] == '\\'))));
#else
no_path |= (name[0] == '.' no_path |= (name[0] == '.'
&& (name[1] == '/' || (name[1] == '.' && name[2] == '/'))); && (name[1] == '/' || (name[1] == '.' && name[2] == '/')));
#endif #endif