Added test cases for string.Formatter subclassing.
Made format_spec parameter to builtin format optional, defaults to
empty string.  Added test cases.
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index b0b85ba..d32b009 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -280,25 +280,32 @@
 {
         static PyObject * format_str = NULL;
         PyObject *value;
-        PyObject *spec;
+        PyObject *spec = NULL;
         PyObject *meth;
-        PyObject *result;
+        PyObject *empty = NULL;
+        PyObject *result = NULL;
 
         /* Initialize cached value */
         if (format_str == NULL) {
                 /* Initialize static variable needed by _PyType_Lookup */
                 format_str = PyUnicode_FromString("__format__");
                 if (format_str == NULL)
-                        return NULL;
+                        goto done;
         }
 
-        if (!PyArg_ParseTuple(args, "OO:format", &value, &spec))
-               return NULL;
+        if (!PyArg_ParseTuple(args, "O|O:format", &value, &spec))
+               goto done;
+
+        /* initialize the default value */
+        if (spec == NULL) {
+            empty = PyUnicode_FromUnicode(NULL, 0);
+            spec = empty;
+        }
 
         /* Make sure the type is initialized.  float gets initialized late */
         if (Py_Type(value)->tp_dict == NULL)
                 if (PyType_Ready(Py_Type(value)) < 0)
-                    return NULL;
+                        goto done;
 
         /* Find the (unbound!) __format__ method (a borrowed reference) */
         meth = _PyType_Lookup(Py_Type(value), format_str);
@@ -306,27 +313,31 @@
                 PyErr_Format(PyExc_TypeError,
                              "Type %.100s doesn't define __format__",
                              Py_Type(value)->tp_name);
-                return NULL;
+                goto done;
         }
 
         /* And call it, binding it to the value */
         result = PyObject_CallFunctionObjArgs(meth, value, spec, NULL);
 
-	if (result && !PyUnicode_Check(result)) {
+        if (result && !PyUnicode_Check(result)) {
                 PyErr_SetString(PyExc_TypeError,
                                 "__format__ method did not return string");
                 Py_DECREF(result);
-                return NULL;
+                result = NULL;
+                goto done;
         }
 
+done:
+        Py_XDECREF(empty);
         return result;
 }
 
-
 PyDoc_STRVAR(format_doc,
-"format(value, format_spec) -> string\n\
+"format(value[, format_spec]) -> string\n\
 \n\
-Returns value.__format__(format_spec).");
+Returns value.__format__(format_spec)\n\
+format_spec defaults to \"\"");
+
 
 static PyObject *
 builtin_chr8(PyObject *self, PyObject *args)