[Python-3000] [Python-3000-checkins] r54588 (original) (raw)
Amaury Forgeot d'Arc amauryfa at gmail.com
Thu Mar 29 21:31:16 CEST 2007
- Previous message: [Python-3000] The latest extended buffer PEP
- Next message: [Python-3000] [Python-3000-checkins] r54588
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hello,
Sorry if I am wrong, but it seems to me that the change in r54588 has a problem: http://mail.python.org/pipermail/python-3000-checkins/2007-March/000433.html
- in the normal case, the return value is INCREF'ed twice
- in the error case, Py_INCREF(NULL) is called...
One easy way to correct this is to move the last INCREF: (sorry for the approximative patch format)
python/branches/p3yk/Objects/typeobject.c:
static PyObject * object_richcompare(PyObject *self, PyObject *other, int op) { PyObject *res;
switch (op) {
case Py_EQ:
res = (self == other) ? Py_True : Py_False;
Py_INCREF(res); break; case Py_NE: /* By default, != returns the opposite of ==, unless the latter returns NotImplemented. */ res = PyObject_RichCompare(self, other, Py_EQ); if (res != NULL && res != Py_NotImplemented) { int ok = PyObject_IsTrue(res); Py_DECREF(res); if (ok < 0) res = NULL; else { if (ok) res = Py_False; else res = Py_True; Py_INCREF(res); } } break; default: res = Py_NotImplemented;
Py_INCREF(res); break; }
- Py_INCREF(res); return res; }
Just trying to be faster than Coverity...
-- Amaury Forgeot d'Arc
- Previous message: [Python-3000] The latest extended buffer PEP
- Next message: [Python-3000] [Python-3000-checkins] r54588
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]