These are true PyCFunctions, after adding the second argument to oss_self, no need to cast.
diff --git a/Modules/ossaudiodev.c b/Modules/ossaudiodev.c
index 0a70c20..e660e50 100644
--- a/Modules/ossaudiodev.c
+++ b/Modules/ossaudiodev.c
@@ -470,7 +470,7 @@
}
static PyObject *
-oss_self(PyObject *self)
+oss_self(PyObject *self, PyObject *unused)
{
Py_INCREF(self);
return self;
@@ -800,8 +800,8 @@
{ "flush", (PyCFunction)oss_sync, METH_VARARGS },
/* Support for the context manager protocol */
- { "__enter__", (PyCFunction)oss_self, METH_NOARGS },
- { "__exit__", (PyCFunction)oss_exit, METH_VARARGS },
+ { "__enter__", oss_self, METH_NOARGS },
+ { "__exit__", oss_exit, METH_VARARGS },
{ NULL, NULL} /* sentinel */
};
@@ -812,8 +812,8 @@
{ "fileno", (PyCFunction)oss_mixer_fileno, METH_NOARGS },
/* Support for the context manager protocol */
- { "__enter__", (PyCFunction)oss_self, METH_NOARGS },
- { "__exit__", (PyCFunction)oss_exit, METH_VARARGS },
+ { "__enter__", oss_self, METH_NOARGS },
+ { "__exit__", oss_exit, METH_VARARGS },
/* Simple ioctl wrappers */
{ "controls", (PyCFunction)oss_mixer_controls, METH_VARARGS },