summaryrefslogtreecommitdiff
path: root/marshal.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-10-09 06:46:40 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-10-09 06:46:40 +0000
commit0b2e94b2abcce9301d75ccd4c986f8c3324a50c7 (patch)
tree2a296d207cdaca296149bddcea43daf0639d10d8 /marshal.c
parent582b7e1ca9b1fe56516d84698cbfaad7ee317bad (diff)
* pack.c (uv_to_utf8): change message to "out of range", since
negative values are not "too big". [ruby-dev21567] * marshal.c (w_object): should pass the value of "weak" to w_object(). [ruby-dev:21555] and [ruby-dev:21561] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4729 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'marshal.c')
-rw-r--r--marshal.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/marshal.c b/marshal.c
index e0d7d42..3df1578 100644
--- a/marshal.c
+++ b/marshal.c
@@ -492,8 +492,9 @@ w_object(obj, arg, limit, weak)
v = rb_funcall(obj, s_mdump, 0, 0);
w_byte(TYPE_USRMARSHAL, arg);
w_unique(rb_class2name(CLASS_OF(obj)), arg);
- w_object(v, arg, limit, Qtrue);
+ w_object(v, arg, limit, weak);
c_arg.weak = Qtrue;
+ ivtbl = rb_generic_ivar_table(v);
if (ivtbl) w_ivar(ivtbl, &c_arg);
return;
}
@@ -507,6 +508,7 @@ w_object(obj, arg, limit, weak)
w_class(TYPE_USERDEF, obj, arg);
w_bytes(RSTRING(v)->ptr, RSTRING(v)->len, arg);
c_arg.weak = Qtrue;
+ ivtbl = rb_generic_ivar_table(v);
if (ivtbl) w_ivar(ivtbl, &c_arg);
return;
}