Skip to content

Commit 9b3a7b5

Browse files
committed
Correctly wrap native '__setitem__'.
1 parent 306880c commit 9b3a7b5

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
@@ -191,6 +191,10 @@ static PyObject* wrap_richcmpfunc(richcmpfunc f, PyObject* a, PyObject* b, PyObj
191191
return f(explicit_cast(a), explicit_cast(b), (int)PyLong_AsLong(n));
192192
}
193193

194+
static PyObject* wrap_ssizeobjargproc(ssizeobjargproc f, PyObject* a, PyObject* size, PyObject* b) {
195+
return PyLong_FromLong(f(explicit_cast(a), PyLong_AsSsize_t(size), explicit_cast(b)));
196+
}
197+
194198
int PyType_Ready(PyTypeObject* cls) {
195199
#define ADD_IF_MISSING(attr, def) if (!(attr)) { attr = def; }
196200
#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)
@@ -414,7 +418,7 @@ int PyType_Ready(PyTypeObject* cls) {
414418
ADD_SLOT("__add__", sequences->sq_concat, -2);
415419
ADD_SLOT("__mul__", sequences->sq_repeat, -2);
416420
ADD_SLOT("__getitem__", sequences->sq_item, -2);
417-
ADD_SLOT("__setitem__", sequences->sq_ass_item, -3);
421+
ADD_SLOT_CONV("__setitem__", wrap_ssizeobjargproc, sequences->sq_ass_item, -3);
418422
ADD_SLOT("__contains__", sequences->sq_contains, -2);
419423
ADD_SLOT("__iadd__", sequences->sq_inplace_concat, -2);
420424
ADD_SLOT("__imul__", sequences->sq_inplace_repeat, -2);

0 commit comments

Comments
 (0)