Hello,

It seems that I've hit a bug in the new dictionary iteration stuff
(which is quite awesome, BTW).  I'm using revision 1374:85a5fdd79388
(new at time of writing).

In iteration over a dictionary, I'm declaring both the variables of
iteration to have explicit types; i.e. my code is:

cdef int k
cdef double v

for k, v in d.iteritems():
   # do things


However, in the c code, I find the following:

 int __pyx_v_k;
 double __pyx_v_v;
...
 void *__pyx_t_2;
 void *__pyx_t_3;
...
   if (!PyDict_Next(__pyx_t_1, (&__pyx_5), ((PyObject**)(&__pyx_t_2)),
((PyObject **)(&__pyx_t_3)))) break;
   __pyx_v_k = ((int)__pyx_t_2);
   __pyx_v_v = ((double)__pyx_t_3);

In other words, it's trying to do a cast directly from a void* type,
which isn't allowed by gcc (The void* to int cast seems problematic as
well).  Thus the code fails on compilation.

If I replace the above loop with

for k_o, v_o in d.iteritems():
   k = k_o
   v = v_o
   # do things

It works fine.

I'll post a ticket with this as well...

Thanks!!!!

--Hoyt

-- 

++++++++++++++++++++++++++++++++++++++++++++++++
+ Hoyt Koepke
+ University of Washington Department of Statistics
+ http://www.stat.washington.edu/~hoytak/
+ [EMAIL PROTECTED]
++++++++++++++++++++++++++++++++++++++++++
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to