From ff7772062f4c10d88249a155dfd918a385dda577 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 21 Jul 2013 18:16:00 +0000 Subject: [PATCH] date_parse.c: missing wday * ext/date/date_parse.c (rfc2822_cb): check if wday is given, since it can be omitted. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42100 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ ext/date/date_parse.c | 4 +++- test/date/test_date_parse.rb | 6 ++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a46cd90364..fa9b2b954e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Jul 22 03:15:54 2013 Nobuyoshi Nakada + + * ext/date/date_parse.c (rfc2822_cb): check if wday is given, since it + can be omitted. + Mon Jul 22 00:15:20 2013 Tanaka Akira * bignum.c (bary_sq_fast): Refine expressions. diff --git a/ext/date/date_parse.c b/ext/date/date_parse.c index 765f9a7292..29dbb239bb 100644 --- a/ext/date/date_parse.c +++ b/ext/date/date_parse.c @@ -2848,7 +2848,9 @@ rfc2822_cb(VALUE m, VALUE hash) s[i] = rb_reg_nth_match(i, m); } - set_hash("wday", INT2FIX(day_num(s[1]))); + if (!NIL_P(s[1])) { + set_hash("wday", INT2FIX(day_num(s[1]))); + } set_hash("mday", str2num(s[2])); set_hash("mon", INT2FIX(mon_num(s[3]))); y = str2num(s[4]); diff --git a/test/date/test_date_parse.rb b/test/date/test_date_parse.rb index a3ade3f86b..30976067a4 100644 --- a/test/date/test_date_parse.rb +++ b/test/date/test_date_parse.rb @@ -1062,10 +1062,16 @@ class TestDateParse < Test::Unit::TestCase d = Date.rfc2822('Sat, 3 Feb 2001 04:05:06 +0700', Date::ITALY + 10) assert_equal(Date.new(2001,2,3), d) assert_equal(Date::ITALY + 10, d.start) + d = Date.rfc2822('3 Feb 2001 04:05:06 +0700', Date::ITALY + 10) + assert_equal(Date.new(2001,2,3), d) + assert_equal(Date::ITALY + 10, d.start) d = DateTime.rfc2822('Sat, 3 Feb 2001 04:05:06 +0700', Date::ITALY + 10) assert_equal(DateTime.new(2001,2,3,4,5,6,'+07:00'), d) assert_equal(Date::ITALY + 10, d.start) + d = DateTime.rfc2822('3 Feb 2001 04:05:06 +0700', Date::ITALY + 10) + assert_equal(DateTime.new(2001,2,3,4,5,6,'+07:00'), d) + assert_equal(Date::ITALY + 10, d.start) end def test_httpdate