From: Guido van Rossum Date: Fri, 24 Aug 2001 10:13:31 +0000 (+0000) Subject: slot_tp_descr_get(): guard against NULL obj or type (bug reported by X-Git-Tag: v2.2a3~348 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2c25239215964746e030d9f7e47232d4dca5746d;p=python slot_tp_descr_get(): guard against NULL obj or type (bug reported by Thomas Hellor on python-dev). slot_tp_descr_set(): if value is NULL, call __del__ instead of __set__. --- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index b64e10bcd4..2017b1e46c 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -2806,14 +2806,23 @@ slot_tp_descr_get(PyObject *self, PyObject *obj, PyObject *type) Py_INCREF(self); return self; } + if (obj == NULL) + obj = Py_None; + if (type == NULL) + type = Py_None; return PyObject_CallFunction(get, "OOO", self, obj, type); } static int slot_tp_descr_set(PyObject *self, PyObject *target, PyObject *value) { - PyObject *res = PyObject_CallMethod(self, "__set__", - "OO", target, value); + PyObject *res; + + if (value == NULL) + res = PyObject_CallMethod(self, "__del__", "O", target); + else + res = PyObject_CallMethod(self, "__set__", + "OO", target, value); if (res == NULL) return -1; Py_DECREF(res);