- bool() called without arguments now returns False rather than
  raising an exception.  This is consistent with calling the
  constructors for the other builtin types -- called without argument
  they all return the false value of that type.  (SF patch #724135)
  Thanks to Alex Martelli.
diff --git a/Objects/boolobject.c b/Objects/boolobject.c
index af6150d..f2429fe 100644
--- a/Objects/boolobject.c
+++ b/Objects/boolobject.c
@@ -51,10 +51,10 @@
 bool_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
 {
 	static char *kwlist[] = {"x", 0};
-	PyObject *x;
+	PyObject *x = Py_False;
 	long ok;
 
-	if (!PyArg_ParseTupleAndKeywords(args, kwds, "O:bool", kwlist, &x))
+	if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:bool", kwlist, &x))
 		return NULL;
 	ok = PyObject_IsTrue(x);
 	if (ok < 0)