From 0b2e94b2abcce9301d75ccd4c986f8c3324a50c7 Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 9 Oct 2003 06:46:40 +0000 Subject: * 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 --- ChangeLog | 8 ++++++++ marshal.c | 4 +++- pack.c | 2 +- time.c | 9 ++++++++- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 756b7bbc60..98a7182b31 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Thu Oct 9 15:45:27 2003 Yukihiro Matsumoto + + * 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] + Thu Oct 9 14:05:38 2003 Nobuyoshi Nakada * eval.c (rb_set_end_proc, rb_exec_end_proc): restore safe level. diff --git a/marshal.c b/marshal.c index e0d7d42be9..3df15789cc 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; } diff --git a/pack.c b/pack.c index 6df527605a..fd5245a618 100644 --- a/pack.c +++ b/pack.c @@ -1857,7 +1857,7 @@ uv_to_utf8(buf, uv) buf[5] = (uv&0x3f)|0x80; return 6; } - rb_raise(rb_eArgError, "uv_to_utf8(); too big value"); + rb_raise(rb_eArgError, "uv_to_utf8(); value out of range"); } static const long utf8_limits[] = { diff --git a/time.c b/time.c index b157f6ff11..8c75b709f5 100644 --- a/time.c +++ b/time.c @@ -1317,6 +1317,7 @@ time_mdump(time) char buf[8]; time_t t; int i; + VALUE str; GetTimeval(time, tobj); @@ -1344,7 +1345,13 @@ time_mdump(time) s = RSHIFT(s, 8); } - return rb_str_new(buf, 8); + str = rb_str_new(buf, 8); + if (FL_TEST(time, FL_EXIVAR)) { + rb_copy_generic_ivar(str, time); + FL_SET(str, FL_EXIVAR); + } + + return str; } static VALUE -- cgit v1.2.3