aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--lib/mkmf.rb1
-rw-r--r--test/mkmf/test_find_executable.rb7
3 files changed, 16 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index da790ffa8f..eeffdcfc42 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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