Skip to content

Commit 1f54d11

Browse files
committed
fix UBSan failures for pysqlite_Statement
1 parent dd99012 commit 1f54d11

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

Modules/_sqlite/statement.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,11 @@ pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql)
9999
}
100100

101101
static void
102-
stmt_dealloc(pysqlite_Statement *self)
102+
stmt_dealloc(PyObject *op)
103103
{
104+
pysqlite_Statement *self = _pysqlite_Statement_CAST(op);
104105
PyTypeObject *tp = Py_TYPE(self);
105-
PyObject_GC_UnTrack(self);
106+
PyObject_GC_UnTrack(op);
106107
if (self->st) {
107108
Py_BEGIN_ALLOW_THREADS
108109
sqlite3_finalize(self->st);
@@ -114,7 +115,7 @@ stmt_dealloc(pysqlite_Statement *self)
114115
}
115116

116117
static int
117-
stmt_traverse(pysqlite_Statement *self, visitproc visit, void *arg)
118+
stmt_traverse(PyObject *self, visitproc visit, void *arg)
118119
{
119120
Py_VISIT(Py_TYPE(self));
120121
return 0;

Modules/_sqlite/statement.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ typedef struct
3535
int is_dml;
3636
} pysqlite_Statement;
3737

38+
#define _pysqlite_Statement_CAST(op) ((pysqlite_Statement *)(op))
39+
3840
pysqlite_Statement *pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql);
3941

4042
int pysqlite_statement_setup_types(PyObject *module);

0 commit comments

Comments
 (0)