From 11720818f68181cee38590d8c69a9003393f2363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Thu, 30 Sep 2021 15:52:05 +0200 Subject: [ruby/rubygems] Don't make duplicated checks on directory safety This seems to speed up `gem install` on Windows by more than 50%. https://github.com/rubygems/rubygems/commit/1970b1296d --- lib/rubygems/package.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'lib/rubygems/package.rb') diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb index c4b29e4176..71f82463f9 100644 --- a/lib/rubygems/package.rb +++ b/lib/rubygems/package.rb @@ -400,7 +400,7 @@ EOM # extracted. def extract_tar_gz(io, destination_dir, pattern = "*") # :nodoc: - directories = [] if dir_mode + directories = [] open_tar_gz io do |tar| tar.each do |entry| next unless File.fnmatch pattern, entry.full_name, File::FNM_DOTMATCH @@ -417,9 +417,11 @@ EOM else File.dirname destination end - directories << mkdir if directories - mkdir_p_safe mkdir, mkdir_options, destination_dir, entry.full_name + unless directories.include?(mkdir) + mkdir_p_safe mkdir, mkdir_options, destination_dir, entry.full_name + directories << mkdir + end File.open destination, 'wb' do |out| out.write entry.read @@ -432,8 +434,7 @@ EOM end end - if directories - directories.uniq! + if dir_mode File.chmod(dir_mode, *directories) end end -- cgit v1.2.3