summaryrefslogtreecommitdiff
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
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
-rw-r--r--ChangeLog8
-rw-r--r--marshal.c4
-rw-r--r--pack.c2
-rw-r--r--time.c9
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 <matz@ruby-lang.org>
+
+ * 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 <nobu@ruby-lang.org>
* 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