From bb05bcde0173ef3d53b0604cfda2e7624b897990 Mon Sep 17 00:00:00 2001 From: tadf Date: Sun, 27 Apr 2014 10:44:23 +0000 Subject: * ext/date/date_strptime.c (date__strptime_internal): do not overwrite century. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ ext/date/date_strptime.c | 10 ++++++---- test/date/test_date_strptime.rb | 4 ++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4aa388c0ba..44ef0cd165 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Sun Apr 27 19:39:42 2014 Tadayoshi Funaba + + * ext/date/date_strptime.c (date__strptime_internal): do not overwrite century. + Sat Apr 26 11:50:08 2014 SHIBATA Hiroshi * test/ruby/test_enum.rb (test_flat_map): Added test for flat_map. diff --git a/ext/date/date_strptime.c b/ext/date/date_strptime.c index 3e1b0f85ea..e318af19f3 100644 --- a/ext/date/date_strptime.c +++ b/ext/date/date_strptime.c @@ -291,8 +291,9 @@ date__strptime_internal(const char *str, size_t slen, if (!valid_range_p(n, 0, 99)) fail(); set_hash("cwyear",n); - set_hash("_cent", - INT2FIX(f_ge_p(n, INT2FIX(69)) ? 19 : 20)); + if (NIL_P(ref_hash("_cent"))) + set_hash("_cent", + INT2FIX(f_ge_p(n, INT2FIX(69)) ? 19 : 20)); goto matched; } @@ -556,8 +557,9 @@ date__strptime_internal(const char *str, size_t slen, if (sign == -1) n = f_negate(n); set_hash("year", n); - set_hash("_cent", - INT2FIX(f_ge_p(n, INT2FIX(69)) ? 19 : 20)); + if (NIL_P(ref_hash("_cent"))) + set_hash("_cent", + INT2FIX(f_ge_p(n, INT2FIX(69)) ? 19 : 20)); goto matched; } diff --git a/test/date/test_date_strptime.rb b/test/date/test_date_strptime.rb index f8483f9e4c..40d4e22a72 100644 --- a/test/date/test_date_strptime.rb +++ b/test/date/test_date_strptime.rb @@ -195,8 +195,12 @@ class TestDateStrptime < Test::Unit::TestCase [['01', '%y'], [2001,nil,nil,nil,nil,nil,nil,nil,nil], __LINE__], [['19 99', '%C %y'], [1999,nil,nil,nil,nil,nil,nil,nil,nil], __LINE__], [['20 01', '%C %y'], [2001,nil,nil,nil,nil,nil,nil,nil,nil], __LINE__], + [['30 99', '%C %y'], [3099,nil,nil,nil,nil,nil,nil,nil,nil], __LINE__], + [['30 01', '%C %y'], [3001,nil,nil,nil,nil,nil,nil,nil,nil], __LINE__], [['1999', '%C%y'], [1999,nil,nil,nil,nil,nil,nil,nil,nil], __LINE__], [['2001', '%C%y'], [2001,nil,nil,nil,nil,nil,nil,nil,nil], __LINE__], + [['3099', '%C%y'], [3099,nil,nil,nil,nil,nil,nil,nil,nil], __LINE__], + [['3001', '%C%y'], [3001,nil,nil,nil,nil,nil,nil,nil,nil], __LINE__], [['20060806', '%Y'], [20060806,nil,nil,nil,nil,nil,nil,nil,nil], __LINE__], [['20060806', "%Y\s"], [20060806,nil,nil,nil,nil,nil,nil,nil,nil], __LINE__], -- cgit v1.2.3