Turns out there wasn't a need to define tp_free for any of the types here.
diff --git a/Modules/datetimemodule.c b/Modules/datetimemodule.c
index 66fb355..d25eb70 100644
--- a/Modules/datetimemodule.c
+++ b/Modules/datetimemodule.c
@@ -2117,7 +2117,7 @@
0, /* tp_init */
0, /* tp_alloc */
delta_new, /* tp_new */
- PyObject_Del, /* tp_free */
+ 0, /* tp_free */
};
/*
@@ -2670,7 +2670,7 @@
0, /* tp_init */
0, /* tp_alloc */
date_new, /* tp_new */
- PyObject_Del, /* tp_free */
+ 0, /* tp_free */
};
/*
@@ -3441,7 +3441,7 @@
0, /* tp_init */
0, /* tp_alloc */
time_new, /* tp_new */
- PyObject_Del, /* tp_free */
+ 0, /* tp_free */
};
/*
@@ -4462,7 +4462,7 @@
0, /* tp_init */
0, /* tp_alloc */
datetime_new, /* tp_new */
- PyObject_Del, /* tp_free */
+ 0, /* tp_free */
};
/* ---------------------------------------------------------------------------