Commit f34f2646 authored by Raymond Hettinger's avatar Raymond Hettinger

SF bug #820397: __nonzero__() returns 1/0

Altered to return a PyBool instead of a PyInt.

Backport candidate.
parent 40b9df2f
...@@ -3325,6 +3325,20 @@ wrap_inquiry(PyObject *self, PyObject *args, void *wrapped) ...@@ -3325,6 +3325,20 @@ wrap_inquiry(PyObject *self, PyObject *args, void *wrapped)
return PyInt_FromLong((long)res); return PyInt_FromLong((long)res);
} }
static PyObject *
wrap_inquirypred(PyObject *self, PyObject *args, void *wrapped)
{
inquiry func = (inquiry)wrapped;
int res;
if (!PyArg_ParseTuple(args, ""))
return NULL;
res = (*func)(self);
if (res == -1 && PyErr_Occurred())
return NULL;
return PyBool_FromLong((long)res);
}
static PyObject * static PyObject *
wrap_binaryfunc(PyObject *self, PyObject *args, void *wrapped) wrap_binaryfunc(PyObject *self, PyObject *args, void *wrapped)
{ {
...@@ -4914,7 +4928,7 @@ static slotdef slotdefs[] = { ...@@ -4914,7 +4928,7 @@ static slotdef slotdefs[] = {
UNSLOT("__pos__", nb_positive, slot_nb_positive, wrap_unaryfunc, "+x"), UNSLOT("__pos__", nb_positive, slot_nb_positive, wrap_unaryfunc, "+x"),
UNSLOT("__abs__", nb_absolute, slot_nb_absolute, wrap_unaryfunc, UNSLOT("__abs__", nb_absolute, slot_nb_absolute, wrap_unaryfunc,
"abs(x)"), "abs(x)"),
UNSLOT("__nonzero__", nb_nonzero, slot_nb_nonzero, wrap_inquiry, UNSLOT("__nonzero__", nb_nonzero, slot_nb_nonzero, wrap_inquirypred,
"x != 0"), "x != 0"),
UNSLOT("__invert__", nb_invert, slot_nb_invert, wrap_unaryfunc, "~x"), UNSLOT("__invert__", nb_invert, slot_nb_invert, wrap_unaryfunc, "~x"),
BINSLOT("__lshift__", nb_lshift, slot_nb_lshift, "<<"), BINSLOT("__lshift__", nb_lshift, slot_nb_lshift, "<<"),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment