2011/2/8 Stefan Behnel <[email protected]>:
> Vitja Makarov, 08.02.2011 10:16:
>> 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.
>
> These aren't really critical bugs as they only deal with memory problems.
> Unless you want to rework them now, I think this is something that we
> should clean up as part of the DefNode/CFuncDefNode refactoring during the
> workshop.
>

Ok.

-- 
vitja.
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to