From a37a05d9df37d127692b719f981487ebee79d480 Mon Sep 17 00:00:00 2001 From: Kirill Podoprigora Date: Wed, 29 May 2024 11:27:48 +0300 Subject: [PATCH 1/3] gh-119655: Do not create type if it's already created --- Modules/_datetimemodule.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index b72a5d3c70b92a..4b3a65a4d1bc42 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -6961,6 +6961,7 @@ _datetime_exec(PyObject *module) goto error; } } + datetime_state *st = get_datetime_state(); #define CREATE_TYPE(VAR, SPEC, BASE) \ do { \ @@ -6972,10 +6973,11 @@ _datetime_exec(PyObject *module) } while (0) PyTypeObject *PyDateTime_IsoCalendarDateType = NULL; - CREATE_TYPE(PyDateTime_IsoCalendarDateType, &isocal_spec, &PyTuple_Type); + if (!st->initialized){ + CREATE_TYPE(PyDateTime_IsoCalendarDateType, &isocal_spec, &PyTuple_Type); + } #undef CREATE_TYPE - datetime_state *st = get_datetime_state(); if (init_state(st, PyDateTime_IsoCalendarDateType) < 0) { goto error; } From 16194266e484c9c28f06e2b9dff13dcb38def402 Mon Sep 17 00:00:00 2001 From: Kirill Podoprigora Date: Wed, 29 May 2024 11:33:05 +0300 Subject: [PATCH 2/3] PEP 7 --- Modules/_datetimemodule.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index 4b3a65a4d1bc42..0137673c1f9740 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -6961,7 +6961,6 @@ _datetime_exec(PyObject *module) goto error; } } - datetime_state *st = get_datetime_state(); #define CREATE_TYPE(VAR, SPEC, BASE) \ do { \ @@ -6973,7 +6972,9 @@ _datetime_exec(PyObject *module) } while (0) PyTypeObject *PyDateTime_IsoCalendarDateType = NULL; - if (!st->initialized){ + datetime_state *st = get_datetime_state(); + + if (!st->initialized) { CREATE_TYPE(PyDateTime_IsoCalendarDateType, &isocal_spec, &PyTuple_Type); } #undef CREATE_TYPE From 3e928445249b849f841f05f4d03f7aa593a3ea0b Mon Sep 17 00:00:00 2001 From: Kirill Podoprigora Date: Wed, 29 May 2024 11:40:15 +0300 Subject: [PATCH 3/3] Remove trailing whitespace --- Modules/_datetimemodule.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index 0137673c1f9740..466382b5148509 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -6973,7 +6973,7 @@ _datetime_exec(PyObject *module) PyTypeObject *PyDateTime_IsoCalendarDateType = NULL; datetime_state *st = get_datetime_state(); - + if (!st->initialized) { CREATE_TYPE(PyDateTime_IsoCalendarDateType, &isocal_spec, &PyTuple_Type); }