summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-04-21 14:56:59 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-04-21 14:56:59 +0000
commit3bc16f62c1fb6225b3f6cb96b62f78e44636aae4 (patch)
tree7861dbce5046671694894b080ca6d0e0d15c6175 /ext
parent143846ad369eba2324e13743ff03bcf50d56c942 (diff)
* time.c: remove time_t restriction from Time class.
* timev.h: new file to define struct vtm. * strftime.c: format struct vtm instead of struct tm. * ext/syck/rubyext.c (mktime_do): don't use time_t; [ruby-dev:38191] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23242 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r--ext/syck/rubyext.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/ext/syck/rubyext.c b/ext/syck/rubyext.c
index a8f0eec978..3538deb5e3 100644
--- a/ext/syck/rubyext.c
+++ b/ext/syck/rubyext.c
@@ -291,7 +291,7 @@ mktime_do(struct mktime_arg *arg)
if ( len > ptr - str && ( *ptr == '-' || *ptr == '+' ) )
{
time_t tz_offset = strtol(ptr, NULL, 10) * 3600;
- time_t tmp;
+ VALUE tmp;
while ( *ptr != ':' && *ptr != '\0' ) ptr++;
if ( *ptr == ':' )
@@ -309,8 +309,9 @@ mktime_do(struct mktime_arg *arg)
/* Make TZ time*/
time = rb_funcall(rb_cTime, s_utc, 6, year, mon, day, hour, min, sec);
- tmp = NUM2LONG(rb_funcall(time, s_to_i, 0)) - tz_offset;
- return rb_funcall(rb_cTime, s_at, 2, LONG2NUM(tmp), LONG2NUM(usec));
+ tmp = rb_funcall(time, s_to_i, 0);
+ tmp = rb_funcall(tmp, '-', 1, LONG2FIX(tz_offset));
+ return rb_funcall(rb_cTime, s_at, 2, tmp, LONG2NUM(usec));
}
else
{