diff --git a/Lib/test/test_bool.py b/Lib/test/test_bool.py
index 404b4e8..a0a03ee 100644
--- a/Lib/test/test_bool.py
+++ b/Lib/test/test_bool.py
@@ -137,6 +137,7 @@
 veris(bool(0), False)
 veris(bool("hello"), True)
 veris(bool(""), False)
+veris(bool(), False)
 
 veris(hasattr([], "append"), True)
 veris(hasattr([], "wobble"), False)
diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py
index 49f58e0..4adbb40 100644
--- a/Lib/test/test_types.py
+++ b/Lib/test/test_types.py
@@ -86,6 +86,10 @@
 if 1 != 1L or 1 != 1.0 or 1L != 1.0: raise TestFailed, 'mixed comparisons'
 if -1 != -1L or -1 != -1.0 or -1L != -1.0:
     raise TestFailed, 'int/long/float value not equal'
+# calling built-in types without argument must return 0
+if int() != 0: raise TestFailed, 'int() does not return 0'
+if long() != 0L: raise TestFailed, 'long() does not return 0L'
+if float() != 0.0: raise TestFailed, 'float() does not return 0.0'
 if int(1.9) == 1 == int(1.1) and int(-1.1) == -1 == int(-1.9): pass
 else: raise TestFailed, 'int() does not round properly'
 if long(1.9) == 1L == long(1.1) and long(-1.1) == -1L == long(-1.9): pass
@@ -214,6 +218,8 @@
 
 
 print '6.5.2 Tuples'
+# calling built-in types without argument must return empty
+if tuple() != (): raise TestFailed,'tuple() does not return ()'
 if len(()) != 0: raise TestFailed, 'len(())'
 if len((1,)) != 1: raise TestFailed, 'len((1,))'
 if len((1,2,3,4,5,6)) != 6: raise TestFailed, 'len((1,2,3,4,5,6))'
@@ -251,6 +257,8 @@
 vereq(list(tuple(f())), range(1000))
 
 print '6.5.3 Lists'
+# calling built-in types without argument must return empty
+if list() != []: raise TestFailed,'list() does not return []'
 if len([]) != 0: raise TestFailed, 'len([])'
 if len([1,]) != 1: raise TestFailed, 'len([1,])'
 if len([1,2,3,4,5,6]) != 6: raise TestFailed, 'len([1,2,3,4,5,6])'
@@ -441,6 +449,8 @@
 
 
 print '6.6 Mappings == Dictionaries'
+# calling built-in types without argument must return empty
+if dict() != {}: raise TestFailed,'dict() does not return {}'
 d = {}
 if d.keys() != []: raise TestFailed, '{}.keys()'
 if d.values() != []: raise TestFailed, '{}.values()'
diff --git a/Misc/NEWS b/Misc/NEWS
index a90c8fc..a637100 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,11 @@
 Core and builtins
 -----------------
 
+- 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)
+
 - In support of PEP 269 (making the pgen parser generator accessible
   from Python), some changes to the pgen code structure were made; a
   few files that used to be linked only with pgen are now linked with
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)
