https://github.com/python/cpython/commit/c1478d1ebb7a6331d06939a27618dafb7fce91f1
commit: c1478d1ebb7a6331d06939a27618dafb7fce91f1
branch: main
author: Bénédikt Tran <10796600+picn...@users.noreply.github.com>
committer: encukou <encu...@gmail.com>
date: 2025-02-25T13:13:47+01:00
summary:

gh-111178: fix UBSan failures in `Modules/unicodedata.c` (GH-129801)

fix UBSan failures for `PreviousDBVersion`

files:
M Modules/unicodedata.c

diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c
index 79be7674fc8ab5..f1ff7bd3eba232 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);

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to