summaryrefslogtreecommitdiffstats
path: root/Modules/_struct.c
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/_struct.c')
-rw-r--r--Modules/_struct.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/Modules/_struct.c b/Modules/_struct.c
index ff1bf4e..0116b03 100644
--- a/Modules/_struct.c
+++ b/Modules/_struct.c
@@ -2250,12 +2250,6 @@ cache_struct_converter(PyObject *module, PyObject *fmt, PyStructObject **ptr)
return 1;
}
- if (state->cache == NULL) {
- state->cache = PyDict_New();
- if (state->cache == NULL)
- return 0;
- }
-
s_object = PyDict_GetItemWithError(state->cache, fmt);
if (s_object != NULL) {
*ptr = (PyStructObject *)Py_NewRef(s_object);
@@ -2288,7 +2282,7 @@ static PyObject *
_clearcache_impl(PyObject *module)
/*[clinic end generated code: output=ce4fb8a7bf7cb523 input=463eaae04bab3211]*/
{
- Py_CLEAR(get_struct_state(module)->cache);
+ PyDict_Clear(get_struct_state(module)->cache);
Py_RETURN_NONE;
}
@@ -2512,6 +2506,11 @@ _structmodule_exec(PyObject *m)
{
_structmodulestate *state = get_struct_state(m);
+ state->cache = PyDict_New();
+ if (state->cache == NULL) {
+ return -1;
+ }
+
state->PyStructType = PyType_FromModuleAndSpec(
m, &PyStructType_spec, NULL);
if (state->PyStructType == NULL) {