summaryrefslogtreecommitdiffstats
path: root/rational.c
diff options
context:
space:
mode:
authortadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-16 10:21:23 +0000
committertadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-16 10:21:23 +0000
commitfc035fe32147b8de4b07d80cf61f03995d3269ca (patch)
tree7750c86ba090665963adb024be13d3a32a5488eb /rational.c
parent85b5e64b4a855f7bbe5e43bc54c6dcb30eebc1b9 (diff)
downloadruby-fc035fe32147b8de4b07d80cf61f03995d3269ca.tar.gz
ruby-fc035fe32147b8de4b07d80cf61f03995d3269ca.tar.xz
ruby-fc035fe32147b8de4b07d80cf61f03995d3269ca.zip
* complex.c (nucomp_marshal_{dump,load}): preserve instance
variables. * rational.c (nurat_marshal_{dump,load}): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'rational.c')
-rw-r--r--rational.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/rational.c b/rational.c
index 5669a7beb..a592ae31e 100644
--- a/rational.c
+++ b/rational.c
@@ -1125,8 +1125,12 @@ nurat_inspect(VALUE self)
static VALUE
nurat_marshal_dump(VALUE self)
{
+ VALUE a;
get_dat1(self);
- return rb_assoc_new(dat->num, dat->den);
+
+ a = rb_assoc_new(dat->num, dat->den);
+ rb_copy_generic_ivar(a, self);
+ return a;
}
static VALUE
@@ -1135,6 +1139,7 @@ nurat_marshal_load(VALUE self, VALUE a)
get_dat1(self);
dat->num = RARRAY_PTR(a)[0];
dat->den = RARRAY_PTR(a)[1];
+ rb_copy_generic_ivar(self, a);
if (f_zero_p(dat->den))
rb_raise_zerodiv();