diff --git a/ext/date/date_core.c b/ext/date/date_core.c index e372a12cd7..d1d03fe407 100644 --- a/ext/date/date_core.c +++ b/ext/date/date_core.c @@ -4342,6 +4342,8 @@ get_limit(VALUE opt) static void check_limit(VALUE str, VALUE opt) { + if (NIL_P(str)) return; + StringValue(str); size_t slen = RSTRING_LEN(str); size_t limit = get_limit(opt); diff --git a/test/date/test_date_parse.rb b/test/date/test_date_parse.rb index a486451ece..1217ee8be6 100644 --- a/test/date/test_date_parse.rb +++ b/test/date/test_date_parse.rb @@ -848,6 +848,9 @@ class TestDateParse < Test::Unit::TestCase h = Date._iso8601('') assert_equal({}, h) + + h = Date._iso8601(nil) + assert_equal({}, h) end def test__rfc3339 @@ -863,6 +866,9 @@ class TestDateParse < Test::Unit::TestCase h = Date._rfc3339('') assert_equal({}, h) + + h = Date._rfc3339(nil) + assert_equal({}, h) end def test__xmlschema @@ -945,6 +951,9 @@ class TestDateParse < Test::Unit::TestCase h = Date._xmlschema('') assert_equal({}, h) + + h = Date._xmlschema(nil) + assert_equal({}, h) end def test__rfc2822 @@ -977,6 +986,9 @@ class TestDateParse < Test::Unit::TestCase h = Date._rfc2822('') assert_equal({}, h) + + h = Date._rfc2822(nil) + assert_equal({}, h) end def test__httpdate @@ -997,6 +1009,9 @@ class TestDateParse < Test::Unit::TestCase h = Date._httpdate('') assert_equal({}, h) + + h = Date._httpdate(nil) + assert_equal({}, h) end def test__jisx0301 @@ -1073,6 +1088,9 @@ class TestDateParse < Test::Unit::TestCase h = Date._jisx0301('') assert_equal({}, h) + + h = Date._jisx0301(nil) + assert_equal({}, h) end def test_iso8601