[前][次][番号順一覧][スレッド一覧]

ruby-changes:4877

From: ko1@a...
Date: Mon, 12 May 2008 10:52:20 +0900 (JST)
Subject: [ruby-changes:4877] nobu - Ruby:r16370 (trunk): * gem_prelude.rb (load_full_rubygems_library, const_missing): prevent

nobu	2008-05-12 10:51:47 +0900 (Mon, 12 May 2008)

  New Revision: 16370

  Modified files:
    trunk/ChangeLog
    trunk/gem_prelude.rb
    trunk/version.h

  Log:
    * gem_prelude.rb (load_full_rubygems_library, const_missing): prevent
      infinite recursion.  [ruby-dev:34539]


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/version.h?r1=16370&r2=16369&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16370&r2=16369&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/gem_prelude.rb?r1=16370&r2=16369&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 16369)
+++ ChangeLog	(revision 16370)
@@ -1,3 +1,8 @@
+Mon May 12 10:51:46 2008  Nobuyoshi Nakada  <nobu@r...>
+
+	* gem_prelude.rb (load_full_rubygems_library, const_missing): prevent
+	  infinite recursion.  [ruby-dev:34539]
+
 Sun May 11 23:19:39 2008  Nobuyoshi Nakada  <nobu@r...>
 
 	* enum.c (all_iter_i, any_iter_i): reduced duplicated code.
Index: gem_prelude.rb
===================================================================
--- gem_prelude.rb	(revision 16369)
+++ gem_prelude.rb	(revision 16370)
@@ -86,7 +86,9 @@
             end
           end
 
-          Kernel.send :undef_method, :gem
+          Kernel.module_eval do
+            undef_method :gem if method_defined? :gem
+          end
 
           $".delete File.join(Gem::ConfigMap[:libdir], 'ruby',
                               Gem::ConfigMap[:ruby_version], 'rubygems.rb')
@@ -186,7 +188,11 @@
 
       def const_missing(constant)
         QuickLoader.load_full_rubygems_library
-        Gem.const_get(constant)
+        if Gem.const_defined?(constant)
+          Gem.const_get(constant)
+        else
+          super
+        end
       end
 
       def method_missing(method, *args, &block)
Index: version.h
===================================================================
--- version.h	(revision 16369)
+++ version.h	(revision 16370)
@@ -1,7 +1,7 @@
 #define RUBY_VERSION "1.9.0"
-#define RUBY_RELEASE_DATE "2008-05-11"
+#define RUBY_RELEASE_DATE "2008-05-12"
 #define RUBY_VERSION_CODE 190
-#define RUBY_RELEASE_CODE 20080511
+#define RUBY_RELEASE_CODE 20080512
 #define RUBY_PATCHLEVEL 0
 
 #define RUBY_VERSION_MAJOR 1
@@ -9,7 +9,7 @@
 #define RUBY_VERSION_TEENY 0
 #define RUBY_RELEASE_YEAR 2008
 #define RUBY_RELEASE_MONTH 5
-#define RUBY_RELEASE_DAY 11
+#define RUBY_RELEASE_DAY 12
 
 #ifdef RUBY_EXTERN
 RUBY_EXTERN const char ruby_version[];

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]