varargs tempification needs to be done for all varargs, not only Python objects
authorStefan Behnel <scoder@users.berlios.de>
Sat, 29 Jan 2011 08:50:02 +0000 (09:50 +0100)
committerStefan Behnel <scoder@users.berlios.de>
Sat, 29 Jan 2011 08:50:02 +0000 (09:50 +0100)
Cython/Compiler/ExprNodes.py

index bc42fe61ff3a714cd23ec764b10eb9b32950e61e..6824d9462cf6ca7d3f2f7863d1e4ff1a83b95291 100755 (executable)
@@ -2990,7 +2990,7 @@ class SimpleCallNode(CallNode):
                     arg = arg.coerce_to_temp(env)
             self.args[i] = arg
         # handle additional varargs parameters
-        for i in range(max_nargs, actual_nargs):
+        for i in xrange(max_nargs, actual_nargs):
             arg = self.args[i]
             if arg.type.is_pyobject:
                 arg_ctype = arg.type.default_coerced_ctype()
@@ -2999,8 +2999,8 @@ class SimpleCallNode(CallNode):
                           "Python object cannot be passed as a varargs parameter")
                 else:
                     self.args[i] = arg = arg.coerce_to(arg_ctype, env)
-                    if arg.is_temp and i > 0:
-                        some_args_in_temps = True
+            if arg.is_temp and i > 0:
+                some_args_in_temps = True
         if some_args_in_temps:
             # if some args are temps and others are not, they may get
             # constructed in the wrong order (temps first) => make