Skip to content
Prev Previous commit
Next Next commit
Do Do not use _ + capital letter in new code as it is also UB.
  • Loading branch information
picnixz committed Feb 8, 2025
commit 0e700b0b070593b1294d096f5c651bc6f1231027
22 changes: 11 additions & 11 deletions Modules/_struct.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ typedef struct {
PyObject *weakreflist; /* List of weak references */
} PyStructObject;

#define _PyStructObject_CAST(op) ((PyStructObject *)(op))
#define PyStructObject_CAST(op) ((PyStructObject *)(op))
#define PyStruct_Check(op, state) PyObject_TypeCheck(op, (PyTypeObject *)(state)->PyStructType)

/* Define various structs to figure out the alignments of types */
Expand Down Expand Up @@ -1856,15 +1856,15 @@ Struct___init___impl(PyStructObject *self, PyObject *format)
static int
s_clear(PyObject *op)
{
PyStructObject *s = _PyStructObject_CAST(op);
PyStructObject *s = PyStructObject_CAST(op);
Py_CLEAR(s->s_format);
return 0;
}

static int
s_traverse(PyObject *op, visitproc visit, void *arg)
{
PyStructObject *s = _PyStructObject_CAST(op);
PyStructObject *s = PyStructObject_CAST(op);
Py_VISIT(Py_TYPE(s));
Py_VISIT(s->s_format);
return 0;
Expand All @@ -1873,7 +1873,7 @@ s_traverse(PyObject *op, visitproc visit, void *arg)
static void
s_dealloc(PyObject *op)
{
PyStructObject *s = _PyStructObject_CAST(op);
PyStructObject *s = PyStructObject_CAST(op);
PyTypeObject *tp = Py_TYPE(s);
PyObject_GC_UnTrack(s);
if (s->weakreflist != NULL) {
Expand Down Expand Up @@ -2277,7 +2277,7 @@ s_pack(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
_structmodulestate *state = get_struct_state_structinst(self);

/* Validate arguments. */
soself = _PyStructObject_CAST(self);
soself = PyStructObject_CAST(self);
assert(PyStruct_Check(self, state));
assert(soself->s_codes != NULL);
if (nargs != soself->s_len)
Expand Down Expand Up @@ -2322,7 +2322,7 @@ s_pack_into(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
_structmodulestate *state = get_struct_state_structinst(self);

/* Validate arguments. +1 is for the first arg as buffer. */
soself = _PyStructObject_CAST(self);
soself = PyStructObject_CAST(self);
assert(PyStruct_Check(self, state));
assert(soself->s_codes != NULL);
if (nargs != (soself->s_len + 2))
Expand Down Expand Up @@ -2410,15 +2410,15 @@ s_pack_into(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
static PyObject *
s_get_format(PyObject *op, void *Py_UNUSED(closure))
{
PyStructObject *self = _PyStructObject_CAST(op);
PyStructObject *self = PyStructObject_CAST(op);
return PyUnicode_FromStringAndSize(PyBytes_AS_STRING(self->s_format),
PyBytes_GET_SIZE(self->s_format));
}

static PyObject *
s_get_size(PyObject *op, void *Py_UNUSED(closure))
{
PyStructObject *self = _PyStructObject_CAST(op);
PyStructObject *self = PyStructObject_CAST(op);
return PyLong_FromSsize_t(self->s_size);
}

Expand All @@ -2428,7 +2428,7 @@ PyDoc_STRVAR(s_sizeof__doc__,
static PyObject *
s_sizeof(PyObject *op, PyObject *Py_UNUSED(unused))
{
PyStructObject *self = _PyStructObject_CAST(op);
PyStructObject *self = PyStructObject_CAST(op);
size_t size = _PyObject_SIZE(Py_TYPE(self)) + sizeof(formatcode);
for (formatcode *code = self->s_codes; code->fmtdef != NULL; code++) {
size += sizeof(formatcode);
Expand All @@ -2439,7 +2439,7 @@ s_sizeof(PyObject *op, PyObject *Py_UNUSED(unused))
static PyObject *
s_repr(PyObject *op)
{
PyStructObject *self = _PyStructObject_CAST(op);
PyStructObject *self = PyStructObject_CAST(op);
PyObject* fmt = PyUnicode_FromStringAndSize(
PyBytes_AS_STRING(self->s_format), PyBytes_GET_SIZE(self->s_format));
if (fmt == NULL) {
Expand Down Expand Up @@ -2525,7 +2525,7 @@ cache_struct_converter(PyObject *module, PyObject *fmt, PyStructObject **ptr)
return 0;
}
if (s_object != NULL) {
*ptr = _PyStructObject_CAST(s_object);
*ptr = PyStructObject_CAST(s_object);
return Py_CLEANUP_SUPPORTED;
}

Expand Down