summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--ext/date/date_parse.c4
-rw-r--r--test/date/test_date_parse.rb20
3 files changed, 27 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index e7cc510..595c359 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sun Oct 28 19:12:11 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (iso8601_{ext,bas}_time): should not match
+ empty string.
+
Sun Oct 28 18:51:33 2012 Tadayoshi Funaba <tadf@dotrb.org>
* ext/date/date_parse.c (date__parse): revised the tight parser.
diff --git a/ext/date/date_parse.c b/ext/date/date_parse.c
index 854b014..7ac9e79 100644
--- a/ext/date/date_parse.c
+++ b/ext/date/date_parse.c
@@ -2440,7 +2440,7 @@ static int
iso8601_ext_time(VALUE str, VALUE hash)
{
static const char pat_source[] =
- "\\A\\s*(?:(\\d{2}):(\\d{2})(?::(\\d{2})(?:[,.](\\d+))?)?"
+ "\\A\\s*(\\d{2}):(\\d{2})(?::(\\d{2})(?:[,.](\\d+))?"
"(z|[-+]\\d{2}(:?\\d{2})?)?)?\\s*\\z";
static VALUE pat = Qnil;
@@ -2452,7 +2452,7 @@ static int
iso8601_bas_time(VALUE str, VALUE hash)
{
static const char pat_source[] =
- "\\A\\s*(?:(\\d{2})(\\d{2})(?:(\\d{2})(?:[,.](\\d+))?)?"
+ "\\A\\s*(\\d{2})(\\d{2})(?:(\\d{2})(?:[,.](\\d+))?"
"(z|[-+]\\d{2}(\\d{2})?)?)?\\s*\\z";
static VALUE pat = Qnil;
diff --git a/test/date/test_date_parse.rb b/test/date/test_date_parse.rb
index f2cfb6f..953eec1 100644
--- a/test/date/test_date_parse.rb
+++ b/test/date/test_date_parse.rb
@@ -541,6 +541,9 @@ class TestDateParse < Test::Unit::TestCase
assert_equal([2006, 333], h.values_at(:year, :yday))
h = Date._parse('333')
assert_equal([nil, 333], h.values_at(:year, :yday))
+
+ h = Date._parse('')
+ assert_equal({}, h)
end
def test_parse
@@ -822,6 +825,8 @@ class TestDateParse < Test::Unit::TestCase
assert_equal([nil, nil, nil, 4, 5, 6, 3600],
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
+ h = Date._iso8601('')
+ assert_equal({}, h)
end
def test__rfc3339
@@ -834,6 +839,9 @@ class TestDateParse < Test::Unit::TestCase
h = Date._rfc3339('2001-02-03T04:05:06.07+01:00')
assert_equal([2001, 2, 3, 4, 5, 6, 3600],
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
+
+ h = Date._rfc3339('')
+ assert_equal({}, h)
end
def test__xmlschema
@@ -913,6 +921,9 @@ class TestDateParse < Test::Unit::TestCase
h = Date._xmlschema('-92001-02-03T04:05:06.07+01:00')
assert_equal([-92001, 2, 3, 4, 5, 6, 3600],
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
+
+ h = Date._xmlschema('')
+ assert_equal({}, h)
end
def test__rfc2822
@@ -942,6 +953,9 @@ class TestDateParse < Test::Unit::TestCase
h1 = Date._rfc2822('Sat, 3 Feb 2001 04:05:06 UT')
h2 = Date._rfc822('Sat, 3 Feb 2001 04:05:06 UT')
assert_equal(h1, h2)
+
+ h = Date._rfc2822('')
+ assert_equal({}, h)
end
def test__httpdate
@@ -959,6 +973,9 @@ class TestDateParse < Test::Unit::TestCase
h = Date._httpdate('Sat Feb 03 04:05:06 2001')
assert_equal([2001, 2, 3, 4, 5, 6, nil],
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
+
+ h = Date._httpdate('')
+ assert_equal({}, h)
end
def test__jisx0301
@@ -984,6 +1001,9 @@ class TestDateParse < Test::Unit::TestCase
h = Date._jisx0301('H13.02.03T04:05:06.07+0100')
assert_equal([2001, 2, 3, 4, 5, 6, 3600],
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
+
+ h = Date._jisx0301('')
+ assert_equal({}, h)
end
def test_iso8601