Merge remote branch 'upstream/master'
authorVitja Makarov <vitja.makarov@gmail.com>
Mon, 14 Feb 2011 06:42:37 +0000 (09:42 +0300)
committerVitja Makarov <vitja.makarov@gmail.com>
Mon, 14 Feb 2011 06:42:37 +0000 (09:42 +0300)
Conflicts:
Cython/Compiler/Nodes.py

1  2 
Cython/Compiler/ExprNodes.py
Cython/Compiler/ModuleNode.py
Cython/Compiler/Nodes.py
Cython/Compiler/Optimize.py

Simple merge
Simple merge
index 128fefe03d96cb9f3e72bc71b3681445ddb4d025,16802078c4b00638d96a66d05b65b7badd134ae3..554b45fb3a7120e6041bd8f70948c49815d4c149
@@@ -2649,18 -2634,19 +2649,18 @@@ class DefNode(FuncDefNode)
              code.putln('if (PyTuple_GET_SIZE(%s) > %d) {' % (
                      Naming.args_cname,
                      max_positional_args))
 -            code.put('%s = PyTuple_GetSlice(%s, %d, PyTuple_GET_SIZE(%s)); ' % (
 +            code.putln('%s = PyTuple_GetSlice(%s, %d, PyTuple_GET_SIZE(%s));' % (
                      self.star_arg.entry.cname, Naming.args_cname,
                      max_positional_args, Naming.args_cname))
 -            code.put_gotref(self.star_arg.entry.cname)
 +            code.putln("if (unlikely(!%s)) {" % self.star_arg.entry.cname)
              if self.starstar_arg:
-                 code.put_decref(self.starstar_arg.entry.cname, py_object_type)
 -                code.putln("")
 -                code.putln("if (unlikely(!%s)) {" % self.star_arg.entry.cname)
+                 code.put_decref_clear(self.starstar_arg.entry.cname, py_object_type)
 -                code.putln('return %s;' % self.error_value())
 -                code.putln('}')
 -            else:
 -                code.putln("if (unlikely(!%s)) return %s;" % (
 -                        self.star_arg.entry.cname, self.error_value()))
 +            if self.needs_closure:
 +                code.put_decref(Naming.cur_scope_cname, self.local_scope.scope_class.type)
 +            code.put_finish_refcount_context()
 +            code.putln('return %s;' % self.error_value())
 +            code.putln('}')
 +            code.put_gotref(self.star_arg.entry.cname)
              code.putln('} else {')
              code.put("%s = %s; " % (self.star_arg.entry.cname, Naming.empty_tuple))
              code.put_incref(Naming.empty_tuple, py_object_type)
Simple merge