Trying to merge latest changes in argument parsing code I found that it still uses direct returns
https://github.com/cython/cython/blob/master/Cython/Compiler/Nodes.py#L2624 Like this: if self.starstar_arg: self.starstar_arg.entry.xdecref_cleanup = 0 code.putln('%s = PyDict_New(); if (unlikely(!%s)) return %s;' % ( self.starstar_arg.entry.cname, self.starstar_arg.entry.cname, self.error_value())) code.put_gotref(self.starstar_arg.entry.cname) Or this: if self.starstar_arg: 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())) That's not good because current scope and refnanny context is already created and should be freed. -- vitja. _______________________________________________ Cython-dev mailing list Cython-dev@codespeak.net http://codespeak.net/mailman/listinfo/cython-dev