[capi-sig] Strange Python behaviour after C-Function

Guilherme Polo ggpolo at gmail.com
Fri Jan 23 19:39:10 CET 2009


On Fri, Jan 23, 2009 at 1:49 PM, Philipp Heuser <philipp at achtziger.de> wrote:
> Hi all,
>
> thanks for the numerous replies to my previous questions.
>
> Everything in C works fine so far, but there is a very strange behaviour in
> python after visiting the C-Function.
>
> The return value of my C-Function is a list of floats. I can print that
> list, I can  do:
>
> a=0
> while a<len(list):
>    print list[a]
>   a=a+1
>
> works fine, but if try to do
>
> for element in list:
>   print element
>
> It does that as well, but as soon as the end of the list is reached, I do
> get an IndexError: list assignment index is out of range.
> Surprisingly I do get that as well with any list, where I try to use the for
> loop after using the C-function. So if I use an arbitrary list like
>
> ll=[1,2,3]
> for l in ll:
>   print l
>
> I do get the same error, and I don't before calling the C-function...
>
> Does that sound familiar to anybody?

It sounds like you are not being careful when coding the C function,
maybe you forgot to clear some exception or maybe it was supposed to
raise an exception but didn't. Can you paste its code ?

> Is that caused by one of the
> decref/incref things?
> Kind regards
> Philipp


-- 
-- Guilherme H. Polo Goncalves


More information about the capi-sig mailing list