From: Guido van Rossum Date: Thu, 2 Aug 2001 15:31:58 +0000 (+0000) Subject: Fix SF #442791 (revisited): No __delitem__ wrapper was defined. X-Git-Tag: v2.2a3~867 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2b8d7bdd771b39a7bbddb53f911624c2ef5b0824;p=thirdparty%2FPython%2Fcpython.git Fix SF #442791 (revisited): No __delitem__ wrapper was defined. --- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 429680d148e2..9b7243b1e672 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1504,9 +1504,26 @@ wrap_intobjargproc(PyObject *self, PyObject *args, void *wrapped) return Py_None; } +static PyObject * +wrap_delitem_int(PyObject *self, PyObject *args, void *wrapped) +{ + intobjargproc func = (intobjargproc)wrapped; + int i, res; + + if (!PyArg_ParseTuple(args, "i", &i)) + return NULL; + res = (*func)(self, i, NULL); + if (res == -1 && PyErr_Occurred()) + return NULL; + Py_INCREF(Py_None); + return Py_None; +} + static struct wrapperbase tab_setitem_int[] = { {"__setitem__", (wrapperfunc)wrap_intobjargproc, "x.__setitem__(i, y) <==> x[i]=y"}, + {"__delitem__", (wrapperfunc)wrap_delitem_int, + "x.__delitem__(y) <==> del x[y]"}, {0} }; @@ -1570,9 +1587,27 @@ wrap_objobjargproc(PyObject *self, PyObject *args, void *wrapped) return Py_None; } +static PyObject * +wrap_delitem(PyObject *self, PyObject *args, void *wrapped) +{ + objobjargproc func = (objobjargproc)wrapped; + int res; + PyObject *key; + + if (!PyArg_ParseTuple(args, "O", &key)) + return NULL; + res = (*func)(self, key, NULL); + if (res == -1 && PyErr_Occurred()) + return NULL; + Py_INCREF(Py_None); + return Py_None; +} + static struct wrapperbase tab_setitem[] = { {"__setitem__", (wrapperfunc)wrap_objobjargproc, "x.__setitem__(y, z) <==> x[y]=z"}, + {"__delitem__", (wrapperfunc)wrap_delitem, + "x.__delitem__(y) <==> del x[y]"}, {0} };