build fix for the last self argument change
authorStefan Behnel <scoder@users.berlios.de>
Fri, 28 Jan 2011 08:35:47 +0000 (09:35 +0100)
committerStefan Behnel <scoder@users.berlios.de>
Fri, 28 Jan 2011 08:35:47 +0000 (09:35 +0100)
Cython/Compiler/ExprNodes.py

index 8d10c17c706158124087ef1d8325427b349f7c5a..254554b80c884f7fb82a8d2b0a4759c6365729d8 100755 (executable)
@@ -2965,10 +2965,13 @@ class SimpleCallNode(CallNode):
             if arg.is_temp:
                 some_args_in_temps = True
             elif arg.type.is_pyobject and not env.nogil:
-                if arg.is_name or (i == 0 and self.self is not None):
-                    # names and a method's cloned "self" argument are ok
+                if i == 0 and self.self is not None:
+                    # a method's cloned "self" argument is ok
+                    pass
+                elif arg.is_name and arg.entry and arg.entry.is_local and not arg.entry.in_closure:
+                    # plain local variables are ok
                     pass
-                elif arg.entry and (not arg.entry.is_local or arg.entry.in_closure):
+                else:
                     # we do not safely own the argument's reference,
                     # but we must make sure it cannot be collected
                     # before we return from the function, so we create