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