]> granicus.if.org Git - python/commitdiff
Require that __nonzero__() return a bool or exactly an int.
authorJeremy Hylton <jeremy@alum.mit.edu>
Fri, 27 Jun 2003 17:38:27 +0000 (17:38 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Fri, 27 Jun 2003 17:38:27 +0000 (17:38 +0000)
Objects/typeobject.c

index 7c4e74461954becb8695e3f738f9d0daafa3995e..a8c8b159e7af4191897643784efa8cd2d10aa8f7 100644 (file)
@@ -4196,18 +4196,14 @@ slot_nb_nonzero(PyObject *self)
                PyObject *temp = PyObject_Call(func, args, NULL);
                Py_DECREF(args);
                if (temp != NULL) {
-                       if (PyInt_Check(temp)) {
-                               /* XXX need to guard against recursion here */
-                               result = PyObject_IsTrue(temp);
-                       }
-                       else if (PyBool_Check(temp))
+                       if (PyInt_CheckExact(temp) || PyBool_Check(temp))
                                result = PyObject_IsTrue(temp);
                        else {
                                PyErr_Format(PyExc_TypeError,
                                             "__nonzero__ should return "
                                             "bool or int, returned %s",
                                             temp->ob_type->tp_name);
-                               result = NULL;
+                               result = -1;
                        }
                        Py_DECREF(temp);
                }