diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | lib/mkmf.rb | 1 | ||||
-rw-r--r-- | test/mkmf/test_find_executable.rb | 7 |
3 files changed, 16 insertions, 0 deletions
@@ -1,3 +1,11 @@ +Fri Mar 25 01:10:42 2016 Sebastian Schuberth <sschuberth@gmail.com> + + * lib/mkmf.rb (find_executable0): On Windows, it is actually valid + to surround individual PATH directory entries with double + quotes. Remove these before joining the path as otherwise the + literal quotes would become part of the path, resulting in the + executable not to be found. [Fix GH-1305] + Thu Mar 24 22:38:18 2016 Nobuyoshi Nakada <nobu@ruby-lang.org> * strftime.c (FMT, FMTV): remove recursive-assignments to get rid diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 6e23db8575..31bee93c97 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -1551,6 +1551,7 @@ SRC end file = nil path.each do |dir| + dir.sub!(/\A"(.*)"\z/m, '\1') if $mswin or $mingw return file if executable_file.call(file = File.join(dir, bin)) if exts exts.each {|ext| executable_file.call(ext = file + ext) and return ext} diff --git a/test/mkmf/test_find_executable.rb b/test/mkmf/test_find_executable.rb index ad48e5193c..7ffc28ecc8 100644 --- a/test/mkmf/test_find_executable.rb +++ b/test/mkmf/test_find_executable.rb @@ -47,5 +47,12 @@ class TestMkmf assert_nil(result) end end + + if /mingw|mswin/ =~ RUBY_PLATFORM + def test_quoted_path_on_windows + ENV["PATH"] = %["#{@tmpdir}"] + test_find_executable + end + end end end |