diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | test/test_time.rb | 2 | ||||
-rw-r--r-- | time.c | 20 |
3 files changed, 24 insertions, 3 deletions
@@ -1,3 +1,8 @@ +Tue May 26 03:41:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * time.c (rb_gmtime, rb_localtime): gmtime and localtime return + NULL on error. [ruby-core:23551] + Tue May 26 03:38:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> * string.c (rb_str_each_char, rb_str_each_codepoint): string diff --git a/test/test_time.rb b/test/test_time.rb index 0d88dce2c4..2a22c6069f 100644 --- a/test/test_time.rb +++ b/test/test_time.rb @@ -1,7 +1,7 @@ require 'time' require 'test/unit' -class TestTimeExtention < Test::Unit::TestCase # :nodoc: +class TestTimeExtension < Test::Unit::TestCase # :nodoc: def test_rfc822 assert_equal(Time.utc(1976, 8, 26, 14, 30) + 4 * 3600, Time.rfc2822("26 Aug 76 14:30 EDT")) @@ -79,8 +79,24 @@ static int leap_year_p(long y); #else #define IF_HAVE_GMTIME_R(x) /* nothing */ #define ASCTIME(tm, buf) asctime(tm) -#define GMTIME(tm, result) (result = *gmtime(tm), &result) -#define LOCALTIME(tm, result) (result = *localtime(tm), &result) +#define GMTIME(tm, result) rb_gmtime((tm), &(result)) +#define LOCALTIME(tm, result) rb_localtime((tm), &(result)) + +static inline struct tm * +rb_gmtime(const time_t *tm, struct tm *result) +{ + struct tm *t = gmtime(tm); + if (t) *result = *t; + return t; +} + +static inline struct tm * +rb_localtime(const time_t *tm, struct tm *result) +{ + struct tm *t = localtime(tm); + if (t) *result = *t; + return t; +} #endif static ID id_divmod, id_mul, id_submicro, id_subnano; |