diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-05-06 13:36:02 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-05-06 13:36:02 +0000 |
commit | 54aa0b1232b9ed09bca30f9f32ec3626498d7ceb (patch) | |
tree | 47c888cf99ec7341a8fb552dd3d01a23eb0d2ee5 /ext/syck/rubyext.c | |
parent | 957ec6fcc81d603216ace1e2366bb841efbf959e (diff) | |
download | ruby-54aa0b1232b9ed09bca30f9f32ec3626498d7ceb.tar.gz |
* ext/syck/rubyext.c (mktime_do): extra digits are not used.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/syck/rubyext.c')
-rw-r--r-- | ext/syck/rubyext.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/ext/syck/rubyext.c b/ext/syck/rubyext.c index b234efdfad..2ab2e49482 100644 --- a/ext/syck/rubyext.c +++ b/ext/syck/rubyext.c @@ -226,7 +226,7 @@ mktime_do(VALUE varg) VALUE hour = INT2FIX(0); VALUE min = INT2FIX(0); VALUE sec = INT2FIX(0); - double usec; + long usec; /* Year*/ if ( ptr[0] != '\0' && len > 0 ) { @@ -272,19 +272,19 @@ mktime_do(VALUE varg) ptr += 2; if ( len > ptr - str && *ptr == '.' ) { - char padded[] = "000000.000000"; - const int padding = 6; + char padded[] = "000000"; + const int padding = (int)(sizeof(padded) - 1); const char *end = ptr + 1; const char *begin = end; - int length; + ptrdiff_t length; while ( isdigit( *end ) ) end++; - length = (int)(end - begin) <= padding ? (int)(end - begin) : padding; + if ((length = (end - begin)) > padding) length = padding; MEMCPY(padded, begin, char, length); - usec = strtod(padded, NULL); + usec = strtol(padded, NULL, 10); } else { - usec = 0.0; + usec = 0; } /* Time Zone*/ @@ -312,12 +312,12 @@ mktime_do(VALUE varg) time = rb_funcall(rb_cTime, s_utc, 6, year, mon, day, hour, min, sec); 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, rb_float_new(usec)); + return rb_funcall(rb_cTime, s_at, 2, tmp, LONG2NUM(usec)); } else { /* Make UTC time*/ - return rb_funcall(rb_cTime, s_utc, 7, year, mon, day, hour, min, sec, rb_float_new(usec)); + return rb_funcall(rb_cTime, s_utc, 7, year, mon, day, hour, min, sec, LONG2NUM(usec)); } } |