From 3fbc9440feb66cf762834b6d66e6f3a893bab5b7 Mon Sep 17 00:00:00 2001 From: tadf Date: Thu, 23 Jun 2011 15:45:58 +0000 Subject: * ext/date/date_core.c (c_valid_{julian,gregorian}_p): fixed the range of month. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32216 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/date/date_core.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'ext/date') diff --git a/ext/date/date_core.c b/ext/date/date_core.c index e43415923b..bdb13a8752 100644 --- a/ext/date/date_core.c +++ b/ext/date/date_core.c @@ -693,7 +693,7 @@ c_valid_julian_p(int y, int m, int d, int *rm, int *rd) if (m < 0) m += 13; - if (m < 0 || m > 12) + if (m < 1 || m > 12) return 0; last = c_julian_last_day_of_month(y, m); if (d < 0) @@ -712,7 +712,7 @@ c_valid_gregorian_p(int y, int m, int d, int *rm, int *rd) if (m < 0) m += 13; - if (m < 0 || m > 12) + if (m < 1 || m > 12) return 0; last = c_gregorian_last_day_of_month(y, m); if (d < 0) @@ -2114,17 +2114,16 @@ valid_civil_p(VALUE y, int m, int d, double sg, decode_year(y, ns ? -1 : +1, &nth2, ry); } } - else if (style > 1) { + else { decode_year(y, style, nth, ry); - r = c_valid_julian_p(*ry, m, d, rm, rd); + if (style < 0) + r = c_valid_gregorian_p(*ry, m, d, rm, rd); + else + r = c_valid_julian_p(*ry, m, d, rm, rd); if (!r) return 0; c_civil_to_jd(*ry, *rm, *rd, style, rjd, ns); } - else { - decode_year(y, style, nth, ry); - r = c_valid_civil_p(*ry, m, d, style, rm, rd, rjd, ns); - } return r; } -- cgit v1.2.3