diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-09-10 06:50:22 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-09-10 06:50:22 +0000 |
commit | 47acededbde66f5a791f5115146e61a19318d791 (patch) | |
tree | 3e8b335e9fb269aa03d4cd1639deb7d38515835f | |
parent | f8eb2ce31e4a515e46530a3f480f250651d0c67b (diff) | |
download | ruby-47acededbde66f5a791f5115146e61a19318d791.tar.gz ruby-47acededbde66f5a791f5115146e61a19318d791.tar.xz ruby-47acededbde66f5a791f5115146e61a19318d791.zip |
* range.c (range_dumper): make uninitialized range dumpable.
(range_loader): make uninitialized range loadable.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@13426 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | range.c | 4 | ||||
-rw-r--r-- | test/ruby/test_range.rb | 7 |
3 files changed, 13 insertions, 3 deletions
@@ -1,7 +1,10 @@ -Mon Sep 10 15:22:24 2007 Tanaka Akira <akr@fsij.org> +Mon Sep 10 15:48:31 2007 Tanaka Akira <akr@fsij.org> * 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@ruby-lang.org> * array.c (rb_ary_cycle): avoid infinite loop for empty array. @@ -758,7 +758,7 @@ range_dumper(VALUE range) 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 @@ range_loader(VALUE range, VALUE obj) 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; } diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb index 847e261f9..34179af74 100644 --- a/test/ruby/test_range.rb +++ b/test/ruby/test_range.rb @@ -64,4 +64,11 @@ class TestRange < Test::Unit::TestCase 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 |