Skip to content
Prev Previous commit
Next Next commit
Factor out calling _PyType_GetModuleByDef & PyModule_GetState
  • Loading branch information
encukou committed Nov 13, 2020
commit 2c60895481efc07f69b770ace33ebf13e63a2505
37 changes: 20 additions & 17 deletions Modules/_csv.c
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,22 @@ static char *dialect_kws[] = {
NULL
};

static _csvstate *
_csv_state_from_type(PyTypeObject *type, const char *name)
{
PyObject *module = _PyType_GetModuleByDef(type, &_csvmodule);
if (module == NULL) {
return NULL;
}
_csvstate *module_state = PyModule_GetState(module);
if (module_state == NULL) {
PyErr_Format(PyExc_SystemError,
"%s: No _csv module state found", name);
Comment thread
encukou marked this conversation as resolved.
return NULL;
}
return module_state;
}

static PyObject *
dialect_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{
Expand Down Expand Up @@ -368,16 +384,7 @@ dialect_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
&strict))
return NULL;

PyObject *module = _PyType_GetModuleByDef(type, &_csvmodule);
if (module == NULL) {
return NULL;
}
_csvstate *module_state = PyModule_GetState(module);
if (module_state == NULL) {
return PyErr_Format(PyExc_SystemError,
"dialect_new: No _csv module state found");
}

_csvstate *module_state = _csv_state_from_type(type, "dialect_new");

if (dialect != NULL) {
if (PyUnicode_Check(dialect)) {
Expand Down Expand Up @@ -810,14 +817,10 @@ Reader_iternext(ReaderObj *self)
const void *data;
PyObject *lineobj;

PyObject *module = _PyType_GetModuleByDef(Py_TYPE(self), &_csvmodule);
if (module == NULL) {
return NULL;
}
_csvstate *module_state = PyModule_GetState(module);
_csvstate *module_state = _csv_state_from_type(Py_TYPE(self),
"Reader.__next__");
if (module_state == NULL) {
return PyErr_Format(PyExc_SystemError,
"dialect_new: No _csv module state found");
return NULL;
}

if (parse_reset(self) < 0)
Expand Down