From c659f4044671e55f833d0b308b90b75274f0d805 Mon Sep 17 00:00:00 2001 From: naruse Date: Thu, 10 Jun 2010 04:31:08 +0000 Subject: Revert r28200. It caused many failures on test-all and following is SEGV. ./ruby -e 'require %!#{"foo/" * 10000}foo!' git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28245 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rubygems/custom_require.rb | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) (limited to 'lib/rubygems') diff --git a/lib/rubygems/custom_require.rb b/lib/rubygems/custom_require.rb index 36e3c78911..43b3136b60 100644 --- a/lib/rubygems/custom_require.rb +++ b/lib/rubygems/custom_require.rb @@ -4,6 +4,8 @@ # See LICENSE.txt for permissions. #++ +require 'rubygems' + module Kernel ## @@ -29,17 +31,10 @@ module Kernel gem_original_require path rescue LoadError => load_error if load_error.message.end_with?(path) and - begin - Gem.try_activate(path) - rescue Gem::LoadError => load_error - pat = "#{__FILE__}:#{__LINE__-2}:in " - bt = load_error.backtrace - num = bt.index {|e| e.start_with?(pat)} and bt.shift(num+2) - raise load_error - end - retry + spec = Gem.searcher.find(path) then + Gem.activate(spec.name, "= #{spec.version}") + gem_original_require path else - load_error.backtrace.shift(2) raise load_error end end @@ -47,5 +42,5 @@ module Kernel private :require private :gem_original_require -end unless Kernel.private_method_defined?(:gem_original_require) +end -- cgit v1.2.3