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

ruby-changes:18667

From: yugui <ko1@a...>
Date: Fri, 28 Jan 2011 11:26:13 +0900 (JST)
Subject: [ruby-changes:18667] Ruby:r30692 (ruby_1_9_2): merges r30641 from trunk into ruby_1_9_2.

yugui	2011-01-28 11:25:35 +0900 (Fri, 28 Jan 2011)

  New Revision: 30692

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=30692

  Log:
    merges r30641 from trunk into ruby_1_9_2.
    --
    * error.c (rb_invalid_str): prevent intermediate variable from GC.
      [ruby-core:34820]

  Modified files:
    branches/ruby_1_9_2/ChangeLog
    branches/ruby_1_9_2/error.c
    branches/ruby_1_9_2/test/ruby/test_float.rb
    branches/ruby_1_9_2/version.h

Index: ruby_1_9_2/ChangeLog
===================================================================
--- ruby_1_9_2/ChangeLog	(revision 30691)
+++ ruby_1_9_2/ChangeLog	(revision 30692)
@@ -1,3 +1,8 @@
+Mon Jan 24 21:04:45 2011  Nobuyoshi Nakada  <nobu@r...>
+
+	* error.c (rb_invalid_str): prevent intermediate variable from GC.
+	  [ruby-core:34820]
+
 Sat Jan 22 11:21:40 2011  Aaron Patterson <aaron@t...>
 
 	* ext/psych/parser.c (parse): fixing off-by-one error on line numbers
Index: ruby_1_9_2/error.c
===================================================================
--- ruby_1_9_2/error.c	(revision 30691)
+++ ruby_1_9_2/error.c	(revision 30692)
@@ -927,7 +927,7 @@
 void
 rb_invalid_str(const char *str, const char *type)
 {
-    VALUE s = rb_str_inspect(rb_str_new2(str));
+    volatile VALUE s = rb_str_inspect(rb_str_new2(str));
 
     rb_raise(rb_eArgError, "invalid value for %s: %s", type, RSTRING_PTR(s));
 }
Index: ruby_1_9_2/version.h
===================================================================
--- ruby_1_9_2/version.h	(revision 30691)
+++ ruby_1_9_2/version.h	(revision 30692)
@@ -1,5 +1,5 @@
 #define RUBY_VERSION "1.9.2"
-#define RUBY_PATCHLEVEL 169
+#define RUBY_PATCHLEVEL 170
 #define RUBY_VERSION_MAJOR 1
 #define RUBY_VERSION_MINOR 9
 #define RUBY_VERSION_TEENY 1
Index: ruby_1_9_2/test/ruby/test_float.rb
===================================================================
--- ruby_1_9_2/test/ruby/test_float.rb	(revision 30691)
+++ ruby_1_9_2/test/ruby/test_float.rb	(revision 30692)
@@ -442,6 +442,18 @@
     assert(Float(o).nan?)
   end
 
+  def test_invalid_str
+    bug4310 = '[ruby-core:34820]'
+    assert_raise(ArgumentError, bug4310) {
+      stress, GC.stress = GC.stress, true
+      begin
+        Float('a'*10000)
+      ensure
+        GC.stress = stress
+      end
+    }
+  end
+
   def test_num2dbl
     assert_raise(TypeError) do
       1.0.step(2.0, "0.5") {}

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

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