Skip to content

Commit aa7d802

Browse files
committed
Correctly wrap 'initproc' for slot 'tp_init'.
1 parent 861e1ed commit aa7d802

File tree

1 file changed

+5
-1
lines changed
  • graalpython/com.oracle.graal.python.cext/src

1 file changed

+5
-1
lines changed

graalpython/com.oracle.graal.python.cext/src/object.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,10 @@ static PyObject* wrap_ssizeobjargproc(ssizeobjargproc f, PyObject* a, PyObject*
195195
return PyLong_FromLong(f(explicit_cast(a), PyLong_AsSsize_t(size), explicit_cast(b)));
196196
}
197197

198+
static PyObject* wrap_initproc(initproc f, PyObject* a, PyObject* b, PyObject* c) {
199+
return PyLong_FromLong(f(explicit_cast(a), explicit_cast(b), explicit_cast(c)));
200+
}
201+
198202
int PyType_Ready(PyTypeObject* cls) {
199203
#define ADD_IF_MISSING(attr, def) if (!(attr)) { attr = def; }
200204
#define ADD_METHOD(m) ADD_METHOD_OR_SLOT(m.ml_name, get_method_flags_cwrapper(m.ml_flags), m.ml_meth, m.ml_flags, m.ml_doc)
@@ -366,7 +370,7 @@ int PyType_Ready(PyTypeObject* cls) {
366370
ADD_SLOT("__next__", cls->tp_iternext, -1);
367371
ADD_SLOT("__get__", cls->tp_descr_get, -3);
368372
ADD_SLOT("__set__", cls->tp_descr_set, -3);
369-
ADD_SLOT("__init__", cls->tp_init, METH_KEYWORDS | METH_VARARGS);
373+
ADD_SLOT_CONV("__init__", wrap_initproc, cls->tp_init, METH_KEYWORDS | METH_VARARGS);
370374
ADD_SLOT_CONV("__alloc__", wrap_allocfunc, cls->tp_alloc, -2);
371375
ADD_SLOT("__new__", cls->tp_new, METH_KEYWORDS | METH_VARARGS);
372376
ADD_SLOT("__free__", cls->tp_free, -1);

0 commit comments

Comments
 (0)