diff options
Diffstat (limited to 'ext/date')
-rw-r--r-- | ext/date/date_strptime.c | 10 |
1 files changed, 6 insertions, 4 deletions
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; } |