<div dir="ltr"><br><br><div class="gmail_quote">On Sat, Jul 19, 2008 at 8:57 AM, Michael Abbott &lt;<a href="mailto:michael@araneidae.co.uk">michael@araneidae.co.uk</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">On Fri, 18 Jul 2008, Travis E. Oliphant wrote:<br>
&gt; It looks like with that added DECREF, the reference count leak is gone.<br>
<br>
</div>I&#39;ve looked at the latest head, and I agree that the problem is now<br>
solved.<br>
<br>
There is an important difference from my original solution: typecode is no<br>
longer reused after the finish label (instead it is always created anew).<br>
This makes all the difference in the world.<br>
<br>
I&#39;m not actually convinced by the comment that&#39;s there now, which says<br>
 &nbsp; &nbsp; &nbsp; &nbsp;/* typecode will be NULL */<br>
but in truth it doesn&#39;t matter -- because of the correcly placed DECREF<br>
after the PyArray_Scalar calls the routine no longer owns typecode.<br>
<br>
If I can refer to my last message, I made the point that there wasn&#39;t a<br>
good invariant at the finish label -- we didn&#39;t know how many references<br>
to typecode we were responsible for at that point -- and I offered the<br>
solution to keep typecode. &nbsp;Instead you have chosen to recreate typecode,<br>
which I hadn&#39;t realised was just as good.<br>
<br>
This code is still horrible, but I don&#39;t think I want to try to understand<br>
it anymore. &nbsp;It&#39;d be really nice (it&#39;d make me feel a lot better) if you&#39;d<br>
agree that my original patch was in fact correct. &nbsp;I&#39;m not disputing the<br>
correcness of the current solution (except I think that typecode can end<br>
up being created twice, but who really cares?) but I&#39;ve put a lot of<br>
effort into arguing my case, and the fact is my original patch was not<br>
wrong.<br>
</blockquote><div><br>Yep, the original patch looks good now. <br>&nbsp;<br></div><br></div><br></div>