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

ruby-changes:1935

From: ko1@a...
Date: 10 Sep 2007 15:50:31 +0900
Subject: [ruby-changes:1935] akr - Ruby:r13426 (trunk): * range.c (range_dumper): make uninitialized range dumpable.

akr	2007-09-10 15:50:22 +0900 (Mon, 10 Sep 2007)

  New Revision: 13426

  Modified files:
    trunk/ChangeLog
    trunk/range.c
    trunk/test/ruby/test_range.rb

  Log:
    * range.c (range_dumper): make uninitialized range dumpable.
      (range_loader): make uninitialized range loadable.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13426&r2=13425
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_range.rb?r1=13426&r2=13425
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/range.c?r1=13426&r2=13425

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 13425)
+++ ChangeLog	(revision 13426)
@@ -1,7 +1,10 @@
-Mon Sep 10 15:22:24 2007  Tanaka Akira  <akr@f...>
+Mon Sep 10 15:48:31 2007  Tanaka Akira  <akr@f...>
 
 	* range.c: represent initialized state using EXCL instead of FL_USER3.
 
+	* range.c (range_dumper): make uninitialized range dumpable.
+	  (range_loader): make uninitialized range loadable.
+
 Mon Sep 10 13:44:37 2007  Yukihiro Matsumoto  <matz@r...>
 
 	* array.c (rb_ary_cycle): avoid infinite loop for empty array.
Index: range.c
===================================================================
--- range.c	(revision 13425)
+++ range.c	(revision 13426)
@@ -758,7 +758,7 @@
 
     v = (VALUE)m;
 
-    rb_ivar_set(v, id_excl, EXCL(range) ? Qtrue : Qfalse);
+    rb_ivar_set(v, id_excl, RANGE_EXCL(range));
     rb_ivar_set(v, id_beg, RANGE_BEG(range));
     rb_ivar_set(v, id_end, RANGE_END(range));
     return v;
@@ -773,7 +773,7 @@
 
     RSTRUCT(range)->as.ary[0] = rb_ivar_get(obj, id_beg);
     RSTRUCT(range)->as.ary[1] = rb_ivar_get(obj, id_end);
-    SET_EXCL(range, RTEST(rb_ivar_get(obj, id_excl)));
+    RSTRUCT(range)->as.ary[2] = rb_ivar_get(obj, id_excl);
     return range;
 }
 
Index: test/ruby/test_range.rb
===================================================================
--- test/ruby/test_range.rb	(revision 13425)
+++ test/ruby/test_range.rb	(revision 13426)
@@ -64,4 +64,11 @@
     r = eval("1..2")
     assert_raise(NameError) { r.instance_eval { initialize 3, 4 } }
   end
+
+  def test_uninitialized_range
+    r = Range.allocate
+    s = Marshal.dump(r)
+    r = Marshal.load(s)
+    assert_nothing_raised { r.instance_eval { initialize 5, 6} }
+  end
 end

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

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