Skip to content

Commit 7ec3d5c

Browse files
committed
bpo-1635741: Apply Victor's review
1 parent f0371c6 commit 7ec3d5c

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

Modules/_dbmmodule.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,11 @@ newdbmobject(_dbm_state *state, const char *file, int flags, int mode)
8484
static void
8585
dbm_dealloc(dbmobject *dp)
8686
{
87-
if ( dp->di_dbm )
87+
if (dp->di_dbm) {
8888
dbm_close(dp->di_dbm);
89+
}
8990
PyTypeObject *tp = Py_TYPE(dp);
90-
freefunc free_func = PyType_GetSlot(tp, Py_tp_free);
91-
free_func(dp);
91+
tp->tp_free(dp);
9292
Py_DECREF(tp);
9393
}
9494

@@ -97,6 +97,7 @@ dbm_length(dbmobject *dp)
9797
{
9898
PyTypeObject *tp = Py_TYPE(dp);
9999
_dbm_state *state = PyType_GetModuleState(tp);
100+
assert(state != NULL);
100101
if (state == NULL) {
101102
return -1;
102103
}
@@ -419,9 +420,14 @@ static PyType_Slot dbmtype_spec_slots[] = {
419420
{0, 0}
420421
};
421422

423+
422424
static PyType_Spec dbmtype_spec = {
423425
.name = "_dbm.dbm",
424426
.basicsize = sizeof(dbmobject),
427+
/*
428+
Calling PyType_GetModuleState() is safe
429+
because Py_TPFLAGS_BASETYPE flag is not used.
430+
*/
425431
.flags = Py_TPFLAGS_DEFAULT,
426432
.slots = dbmtype_spec_slots,
427433
};

0 commit comments

Comments
 (0)