diff -r fb4e13afc2b6 Cython/Compiler/Nodes.py
--- a/Cython/Compiler/Nodes.py	Tue Feb 24 16:58:23 2009 +0100
+++ b/Cython/Compiler/Nodes.py	Tue Feb 24 17:51:39 2009 -0200
@@ -2186,18 +2186,18 @@
         max_args = len(all_args)
 
         default_args = []
-        for arg in all_args:
+        for i, arg in enumerate(all_args):
             if arg.default and arg.type.is_pyobject:
                 default_value = arg.default_result_code
                 if arg.type is not PyrexTypes.py_object_type:
                     default_value = "(PyObject*)"+default_value
-                default_args.append(default_value)
-            else:
-                default_args.append('0')
-        code.putln("PyObject* values[%d] = {%s};" % (
-                max_args, ', '.join(default_args)))
+            else:
+                default_value = '0'
+            default_args.append(' values[%d] = %s;' % (i, default_value))
         code.putln("Py_ssize_t kw_args = PyDict_Size(%s);" %
                    Naming.kwds_cname)
+        code.putln("PyObject* values[%d];%s" % (
+                max_args, ''.join(default_args)))
 
         # parse the tuple and check that it's not too long
         code.putln('switch (PyTuple_GET_SIZE(%s)) {' % Naming.args_cname)
