mkmf: Unquote directory strings

* 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]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2016-03-24 16:10:43 +00:00
Родитель e7e0eeb084
Коммит 22f1db4b8e
3 изменённых файлов: 16 добавлений и 0 удалений

Просмотреть файл

@ -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

Просмотреть файл

@ -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}

Просмотреть файл

@ -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