gh-111178: fix UBSan failures in Modules/_queuemodule.c (GH-129790)

Fix UBSan failures for `simplequeueobject`

Suppress unused return values
This commit is contained in:
Bénédikt Tran 2025-02-21 15:37:32 +01:00 committed by GitHub
parent 4f07fd59cb
commit 55f8bac208
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -197,6 +197,8 @@ typedef struct {
PyObject *weakreflist;
} simplequeueobject;
#define simplequeueobject_CAST(op) ((simplequeueobject *)(op))
/*[clinic input]
module _queue
class _queue.SimpleQueue "simplequeueobject *" "simplequeue_get_state_by_type(type)->SimpleQueueType"
@ -204,28 +206,32 @@ class _queue.SimpleQueue "simplequeueobject *" "simplequeue_get_state_by_type(ty
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=0a4023fe4d198c8d]*/
static int
simplequeue_clear(simplequeueobject *self)
simplequeue_clear(PyObject *op)
{
simplequeueobject *self = simplequeueobject_CAST(op);
RingBuf_Fini(&self->buf);
return 0;
}
static void
simplequeue_dealloc(simplequeueobject *self)
simplequeue_dealloc(PyObject *op)
{
simplequeueobject *self = simplequeueobject_CAST(op);
PyTypeObject *tp = Py_TYPE(self);
PyObject_GC_UnTrack(self);
(void)simplequeue_clear(self);
if (self->weakreflist != NULL)
PyObject_ClearWeakRefs((PyObject *) self);
Py_TYPE(self)->tp_free(self);
(void)simplequeue_clear(op);
if (self->weakreflist != NULL) {
PyObject_ClearWeakRefs(op);
}
tp->tp_free(self);
Py_DECREF(tp);
}
static int
simplequeue_traverse(simplequeueobject *self, visitproc visit, void *arg)
simplequeue_traverse(PyObject *op, visitproc visit, void *arg)
{
simplequeueobject *self = simplequeueobject_CAST(op);
RingBuf *buf = &self->buf;
for (Py_ssize_t i = 0, num_items = buf->num_items; i < num_items; i++) {
Py_VISIT(RingBuf_At(buf, i));
@ -514,7 +520,7 @@ queue_clear(PyObject *m)
static void
queue_free(void *m)
{
queue_clear((PyObject *)m);
(void)queue_clear((PyObject *)m);
}
#include "clinic/_queuemodule.c.h"