bpo-46541: Remove usage of _Py_IDENTIFIER from csv module (GH-31372)

This commit is contained in:
Dong-hee Na 2022-02-17 00:24:03 +09:00 committed by GitHub
parent 562c13f573
commit d64f3caebe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 4 deletions

View File

@ -10,8 +10,6 @@ module instead.
#define MODULE_VERSION "1.0"
#define NEEDS_PY_IDENTIFIER
#include "Python.h"
#include "structmember.h" // PyMemberDef
#include <stdbool.h>
@ -27,6 +25,7 @@ typedef struct {
PyTypeObject *reader_type;
PyTypeObject *writer_type;
long field_limit; /* max parsed field size */
PyObject *str_write;
} _csvstate;
static struct PyModuleDef _csvmodule;
@ -48,6 +47,7 @@ _csv_clear(PyObject *module)
Py_CLEAR(module_state->dialect_type);
Py_CLEAR(module_state->reader_type);
Py_CLEAR(module_state->writer_type);
Py_CLEAR(module_state->str_write);
return 0;
}
@ -60,6 +60,7 @@ _csv_traverse(PyObject *module, visitproc visit, void *arg)
Py_VISIT(module_state->dialect_type);
Py_VISIT(module_state->reader_type);
Py_VISIT(module_state->writer_type);
Py_VISIT(module_state->str_write);
return 0;
}
@ -1430,7 +1431,6 @@ csv_writer(PyObject *module, PyObject *args, PyObject *keyword_args)
PyObject * output_file, * dialect = NULL;
_csvstate *module_state = get_csv_state(module);
WriterObj * self = PyObject_GC_New(WriterObj, module_state->writer_type);
_Py_IDENTIFIER(write);
if (!self)
return NULL;
@ -1449,7 +1449,9 @@ csv_writer(PyObject *module, PyObject *args, PyObject *keyword_args)
Py_DECREF(self);
return NULL;
}
if (_PyObject_LookupAttrId(output_file, &PyId_write, &self->write) < 0) {
if (_PyObject_LookupAttr(output_file,
module_state->str_write,
&self->write) < 0) {
Py_DECREF(self);
return NULL;
}
@ -1751,6 +1753,10 @@ csv_exec(PyObject *module) {
return -1;
}
module_state->str_write = PyUnicode_InternFromString("write");
if (module_state->str_write == NULL) {
return -1;
}
return 0;
}