From 64fb417473889de0f03bee0f178293ce70623a92 Mon Sep 17 00:00:00 2001 From: matz Date: Tue, 27 Feb 2001 07:52:11 +0000 Subject: * time.c (time_timeval): negative time interval shoule not be allowed. * eval.c (proc_call): ignore block to `call' always, despite of being orphan or not. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1220 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- time.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) (limited to 'time.c') diff --git a/time.c b/time.c index 8da0daff53..1b18859bcc 100644 --- a/time.c +++ b/time.c @@ -106,39 +106,37 @@ time_timeval(time, interval) int interval; { struct timeval t; + char *tstr = interval ? "time interval" : "time"; + +#ifndef NEGATIVE_TIME_T + interval = 1; +#endif switch (TYPE(time)) { case T_FIXNUM: t.tv_sec = FIX2LONG(time); -#ifndef NEGATIVE_TIME_T - if (t.tv_sec < 0) - rb_raise(rb_eArgError, "time must be positive"); -#endif + if (interval && t.tv_sec < 0) + rb_raise(rb_eArgError, "%s must be positive", tstr); t.tv_usec = 0; break; case T_FLOAT: -#ifndef NEGATIVE_TIME_T - if (RFLOAT(time)->value < 0.0) - rb_raise(rb_eArgError, "time must be positive"); -#endif + if (interval && RFLOAT(time)->value < 0.0) + rb_raise(rb_eArgError, "%s must be positive", tstr); t.tv_sec = (time_t)RFLOAT(time)->value; t.tv_usec = (time_t)((RFLOAT(time)->value - (double)t.tv_sec)*1e6); break; case T_BIGNUM: t.tv_sec = NUM2LONG(time); -#ifndef NEGATIVE_TIME_T - if (t.tv_sec < 0) - rb_raise(rb_eArgError, "time must be positive"); -#endif + if (interval && t.tv_sec < 0) + rb_raise(rb_eArgError, "%s must be positive", tstr); t.tv_usec = 0; break; default: - rb_raise(rb_eTypeError, "can't convert %s into Time%s", - rb_class2name(CLASS_OF(time)), - interval ? " interval" : ""); + rb_raise(rb_eTypeError, "can't convert %s into %s", + rb_class2name(CLASS_OF(time)), tstr); break; } return t; -- cgit v1.2.3