From 762fec4946d4ab0eea846ef87de22e783ddd5ac7 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 25 May 2009 18:41:32 +0000 Subject: [PATCH] * time.c (rb_gmtime, rb_localtime): gmtime and localtime return NULL on error. [ruby-core:23551] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23569 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ test/test_time.rb | 2 +- time.c | 20 ++++++++++++++++++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 86b022f082..7ece937c7c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue May 26 03:41:29 2009 Nobuyoshi Nakada + + * 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 * 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")) diff --git a/time.c b/time.c index 7fcb7f40ab..33ad1a4b3a 100644 --- a/time.c +++ b/time.c @@ -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;