Skip to content

Commit 00ba564

Browse files
committed
Remove duplicate call to days_in_month() by storing in variable
1 parent ab1feac commit 00ba564

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

Modules/_datetimemodule.c

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5502,22 +5502,26 @@ datetime_fromisoformat(PyObject *cls, PyObject *dtstr)
55025502
goto error;
55035503
}
55045504

5505-
if ((hour == 24) && (month <= 12 && day <= days_in_month(year, month))) {
5506-
if (minute == 0 && second == 0 && microsecond == 0) {
5507-
// Calculate midnight of the next day
5508-
hour = 0;
5509-
day += 1;
5510-
if (day > days_in_month(year, month)) {
5511-
day = 1;
5512-
month += 1;
5513-
if (month > 12) {
5514-
month = 1;
5515-
year += 1;
5505+
if ((hour == 24) && (month <= 12)) {
5506+
int d_in_month = days_in_month(year, month);
5507+
if (day <= d_in_month) {
5508+
if (minute == 0 && second == 0 && microsecond == 0) {
5509+
// Calculate midnight of the next day
5510+
hour = 0;
5511+
day += 1;
5512+
if (day > d_in_month) {
5513+
day = 1;
5514+
month += 1;
5515+
if (month > 12) {
5516+
month = 1;
5517+
year += 1;
5518+
}
55165519
}
5520+
} else {
5521+
goto invalid_iso_midnight;
55175522
}
5518-
} else {
5519-
goto invalid_iso_midnight;
55205523
}
5524+
55215525
}
55225526
PyObject *dt = new_datetime_subclass_ex(year, month, day, hour, minute,
55235527
second, microsecond, tzinfo, cls);

0 commit comments

Comments
 (0)