From c1478d1ebb7a6331d06939a27618dafb7fce91f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Tue, 25 Feb 2025 13:13:47 +0100 Subject: gh-111178: fix UBSan failures in `Modules/unicodedata.c` (GH-129801) fix UBSan failures for `PreviousDBVersion` --- Modules/unicodedata.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c index 79be767..f1ff7bd 100644 --- a/Modules/unicodedata.c +++ b/Modules/unicodedata.c @@ -77,9 +77,11 @@ typedef struct previous_version { Py_UCS4 (*normalization)(Py_UCS4); } PreviousDBVersion; +#define PreviousDBVersion_CAST(op) ((PreviousDBVersion *)(op)) + #include "clinic/unicodedata.c.h" -#define get_old_record(self, v) ((((PreviousDBVersion*)self)->getrecord)(v)) +#define get_old_record(self, v) (PreviousDBVersion_CAST(self)->getrecord(v)) static PyMemberDef DB_members[] = { {"unidata_version", Py_T_STRING, offsetof(PreviousDBVersion, name), Py_READONLY}, @@ -1591,14 +1593,14 @@ static PyMethodDef unicodedata_functions[] = { }; static int -ucd_traverse(PreviousDBVersion *self, visitproc visit, void *arg) +ucd_traverse(PyObject *self, visitproc visit, void *arg) { Py_VISIT(Py_TYPE(self)); return 0; } static void -ucd_dealloc(PreviousDBVersion *self) +ucd_dealloc(PyObject *self) { PyTypeObject *tp = Py_TYPE(self); PyObject_GC_UnTrack(self); -- cgit v0.12