]> granicus.if.org Git - python/commitdiff
SF bug #820397: __nonzero__() returns 1/0
authorRaymond Hettinger <python@rcn.com>
Sat, 11 Oct 2003 17:29:04 +0000 (17:29 +0000)
committerRaymond Hettinger <python@rcn.com>
Sat, 11 Oct 2003 17:29:04 +0000 (17:29 +0000)
Altered to return a PyBool instead of a PyInt.

Backport candidate.

Objects/typeobject.c

index cc844ad6ddb1e2467627634ea79627ec4159b134..945c337e1a7f437fda2036d2d86fff1c3b4f949a 100644 (file)
@@ -3325,6 +3325,20 @@ wrap_inquiry(PyObject *self, PyObject *args, void *wrapped)
        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 *
 wrap_binaryfunc(PyObject *self, PyObject *args, void *wrapped)
 {
@@ -4914,7 +4928,7 @@ static slotdef slotdefs[] = {
        UNSLOT("__pos__", nb_positive, slot_nb_positive, wrap_unaryfunc, "+x"),
        UNSLOT("__abs__", nb_absolute, slot_nb_absolute, wrap_unaryfunc,
               "abs(x)"),
-       UNSLOT("__nonzero__", nb_nonzero, slot_nb_nonzero, wrap_inquiry,
+       UNSLOT("__nonzero__", nb_nonzero, slot_nb_nonzero, wrap_inquirypred,
               "x != 0"),
        UNSLOT("__invert__", nb_invert, slot_nb_invert, wrap_unaryfunc, "~x"),
        BINSLOT("__lshift__", nb_lshift, slot_nb_lshift, "<<"),