fix: handle char boundary in parse_weekday and parse_month

This commit is contained in:
Marsman
2026-02-10 13:17:40 +00:00
parent 55380d119d
commit 7de04a217b
+8 -2
View File
@@ -488,7 +488,10 @@ fn parse_am_pm(s: &str) -> Option<(bool, usize)> {
fn parse_weekday(s: &str, abbrev: bool) -> Option<(usize, usize)> {
let list = if abbrev { &SHORT_DAYS } else { &LONG_DAYS };
for (i, name) in list.iter().enumerate() {
if s.len() >= name.len() && s[0..name.len()].eq_ignore_ascii_case(name) {
if s.len() >= name.len()
&& s.get(0..name.len())
.map_or(false, |sub| sub.eq_ignore_ascii_case(name))
{
return Some((i, name.len()));
}
}
@@ -502,7 +505,10 @@ fn parse_weekday(s: &str, abbrev: bool) -> Option<(usize, usize)> {
fn parse_month(s: &str, abbrev: bool) -> Option<(usize, usize)> {
let list = if abbrev { &SHORT_MONTHS } else { &LONG_MONTHS };
for (i, name) in list.iter().enumerate() {
if s.len() >= name.len() && s[0..name.len()].eq_ignore_ascii_case(name) {
if s.len() >= name.len()
&& s.get(0..name.len())
.map_or(false, |sub| sub.eq_ignore_ascii_case(name))
{
return Some((i, name.len()));
}
}